面向对象编程(OOP)————修饰符

一.类的修饰符

Java语言中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。如果将类的成员变量和成员方法的访问权限设置为public,则除了可以在本类使用这些数据之外,还可以在子类和其它包中的类中使用。如果一个类的访问权限被设置为private,这个类将隐藏其内的所有数据,以免用户直接访问它。如果需要使类中的数据被子类或其他包中的类使用,可以将这个类设置为public访问权限。如果一个类使用protected修饰符,那么只有本包内该类的子类或其他类可以访问此类中的成员变量和成员方法。

这麽看来,public和protected修饰的类可以由子类访问,如果子类和父类不在同一包中,那么只有修饰符为public的类可以被子类进行访问。如果父类不允许通过继承产生的子类访问他的成员变量,那么必须使用private声明父类的这个成员变量。

默认修饰符:只有一个包内的其他类和子类可以对该类进行访问,这类修饰符视为默认修饰符。

1.修饰符的特点:

(1)public(公共的):无限制

(2) protected (保护的):默认的、本包内

(3)private(私有的):类内部、常用来修饰属性,再开放公共的方法

用法:在类、属性、方法前面

2.成员变量的规范:

(1)设成private

(2)POJO简单JAVA对象:只有属性和getter、setter方法,没有业务逻辑。

实战 : 构造一个汽车Car的类

  1 package org.hanqi.pn0120;
  2
  3 //汽车
  4 public class Car {
  5
  6     //颜色
  7     private String yanse;
  8
  9     //品牌
 10     private String  pinpai;
 11
 12     //油箱容量
 13     private double youxiangrl=40;
 14
 15     //当前油量
 16     private double dangqianyl=0;
 17
 18     public double getDangqianyl()
 19     {
 20         return  this.dangqianyl;
 21     }
 22
 23     //加油
 24     public void jiaYou(double youliang)
 25     {
 26         if(youliang<0)
 27         {
 28             System.out.println("不要偷油");
 29         }
 30         else if(this.dangqianyl+ youliang>this.youxiangrl)
 31         {
 32             //本次加油量
 33             double bcyl=this.youxiangrl-this.dangqianyl;
 34
 35             this.dangqianyl=this.youxiangrl;
 36
 37             System.out.println("油太多了,已经加满了,这次加了"+bcyl+"升油");
 38         }
 39         else
 40         {
 41             this.dangqianyl+=youliang;
 42
 43             System.out.println("这次加了"+youliang+"升油");
 44         }
 45
 46     }
 47 //    private double youhao=;
 48
 49     private double xingshizlc=0;
 50
 51     public double getXingshizlc()
 52     {
 53         return this.xingshizlc;
 54     }
 55
 56     //行驶
 57     public void xingshi(double xingshilc,double youhao)
 58     {
 59         //
 60         if(this.dangqianyl<=0)
 61         {
 62             System.out.println("车没有油,怎么开车");
 63
 64             return;
 65         }
 66
 67         if(xingshilc<0||youhao<0)
 68         {
 69             System.out.println("不可能这麽开车");
 70         }
 71         else
 72         {
 73         //油耗
 74         double dangqyh=xingshilc*youhao/100;
 75
 76         this.dangqianyl-=dangqyh;
 77
 78         //验证当前油量
 79         //this.dangqianyl=this.dangqianyl>0?this.dangqianyl:0;
 80
 81         if(this.dangqianyl<0)
 82         {
 83               this.dangqianyl=0;
 84
 85               System.out.println("你是推着车吗?");
 86         }
 87
 88         this.xingshizlc+=xingshilc;
 89
 90         System.out.println("本次行驶了"+xingshilc+"公里");
 91         }
 92     }
 93
 94     public String getYanse() {
 95         return yanse;
 96     }
 97
 98     public void setYanse(String yanse) {
 99         this.yanse = yanse;
100     }
101
102     public String getPinpai() {
103         return pinpai;
104     }
105
106     public void setPinpai(String pinpai) {
107         this.pinpai = pinpai;
108     }
109
110     public double getYouxiangrl() {
111         return youxiangrl;
112     }
113
114     public void setYouxiangrl(double youxiangrl) {
115         this.youxiangrl = youxiangrl;
116     }
117
118     public Car(String pinpai, double youxiangrl) {
119         super();
120         this.pinpai = pinpai;
121         this.youxiangrl = youxiangrl;
122     }
123
124
125     //设计模式---单例模式(单态模式)
126
127     //静态 static
128
129
130     //main方法
131     public static void main(String[] args)
132     {
133
134         Car myBenchi=new Car("奔驰",50);
135
136         System.out.println("品牌="+myBenchi.getPinpai());
137
138         System.out.println("油箱容量="+myBenchi.getYouxiangrl());
139
140         myBenchi.xingshi(200, 13);
141
142         myBenchi.jiaYou(30);
143
144         myBenchi.jiaYou(30);
145
146         System.out.println("当前油量="+myBenchi.getDangqianyl());
147
148         myBenchi.xingshi(300, -15);
149
150         System.out.println("当前油量="+myBenchi.getDangqianyl());
151
152         myBenchi.xingshi(200, 13);
153
154         System.out.println("当前总里程="+myBenchi.getXingshizlc());
155
156         System.out.println("当前油量="+myBenchi.getDangqianyl());
157     }
158
159
160 }

Car

时间: 2024-10-12 14:32:34

面向对象编程(OOP)————修饰符的相关文章

2016/1/17 笔记 1,面向对象编程OOP 2,类

面向对象编程OOP 编程方式的发展 1,面向过程 重用性低 维护工作量大  2,面向对象 重用性高 维护容易 概念 1,对象 Object 一个具体的事物 是类的实例      2,类Class 同一类事物的统称 具有相同属性和行为的一类实体 特性:1,封装:  oop的核心思想           封装属性和行为,隐藏细节           保证内部数据完整性        2,继承: 子类自动继承所有父类的属性和行为           java是单继承 所有类的父类Object     

23 Python - 面向对象编程OOP

面向对象编程OOP 01 方法__repr__()和__str__() __repr__()方法类似java中的toString方法,用于反馈类的相关信息且可以自己定义,一般用于开发人员控制台调试 __rept__()和__str__()方法区别 在控制台交互测试时: 输入b返回__rept__()方法结果 输入print(b) 返回__str__()方法结果,如果没有定义__str__()方法  则用__rept__()结果代替__str__()方法结果 __rept__()   打印信息一般

学习面向对象编程OOP 第一天

面向对象编程 Object Oriented Programming 一.什么是面向对象编程OOP 1.计算机编程架构; 2.计算机程序是由一个能够起到子程序作用的单元或者对象组合而成.也就是说由多个程序单元可以拼凑成一个完整的功能程序; 3.三个目标:重用性.灵活性和扩展性; 4.每个单独的对象或者单元都可以实现数据的接收.处理和发送; 5.在实际的项目开发中,都会使用达到OOP去声明类,而且在项目里面只用对象和类. 详细参考网址(根据原文学习的) http://www.cnblogs.com

面向过程编程(OPP) 和面向对象编程(OOP)的关系

面向过程编程(OPP) 和面向对象编程(OOP)的关系 原文链接:http://blog.csdn.net/phphot/article/details/3985480 关于面向过程的编程(OPP)和面向对象的编程(OOP),给出这它们的定义的人很多,您可以从任何资料中找到很专业的解释,但以我的经验来看,讲的相对枯燥一点,不是很直观.除非您已经有了相当的积累,否则说起来还是比较费劲. 我是个老程序员出身,虽然现在的日常工作更多倾向了管理,但至今依然保持编码的习惯,这句话什么意思呢?我跟大家沟通应

【面向对象】访问控制修饰符privat…(转载)

[面向对象]访问控制修饰符privat- 访问控制修饰符 1)访问控制修饰符可以修饰属性.方法.构造方法.类 2)private: 私有访问权限控制,被private修饰的属性.方法.构造方法.只能在本类的内部调用,外界无法访问 eg:   class Teacher { String name; int age; private double salary; Teacher(String name, int age, double salary){ this.name = name; this

Python笔记5#面向对象编程OOP

▲面向对象编程OOP Object Oriented Programming.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递. 在Python

24 Python - 面向对象编程OOP

面向对象编程OOP 01内容回顾 02属性@property本质是函数 未用属性前内容 使用属性后内容 @property  属性本质是函数,但是用起来像字段 03继承.多态示例 继承通过下面的一个基类 和一个派生类讲解 里面用到了继承和多态 [基类] [派生类] [函数调用] 04类嵌套如Employee引用Department 注意:在Employee的init()的参数中用department:Department来说明department是一个类,这样写有利于代码可读性 调用 原文地址:

php面向对象编程(oop)基础知识

面向对象并不是一种技术,而是一种思想,是一种解决问题的最基本的思维方式!如何理解使用?OOP:面向对象编程 (直接代码说明) 1.面向对象的基本概念示例demo: 1 <?php 2 header("Content-Type: text/html;charset=utf-8"); 3 //如何类的实例化? 例如: $newA= new a(); 利用类得到对象,过程是类的实例化.关键字new完成. 4 //如何定义一个类? 例如: class a{} 类 5 //如何声明定义属性

面向对象编程OOP Object oriented programing

oop是面向对象编程(设计) 面向对象程序设计(英语:Object Oriented Programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法论.它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性.灵活性和扩展性.基本理论 一项由 Deborah J. Armstrong 进行的长达40年之久的计算机著作调查显示出了一系列面向对象程序设计的基本理论.它们是: 类 类(Class)定义了一件事物的抽象特点.通常来说,类定义了事物的属性和它可以做到的(

面向对象的权限修饰符

权限修饰符:卸载属性/方法前面 作用:用来说明属性/方法的权限特点. class man{ private $money=1000; public $name=dita; protected function say() { } } 共有三个权限修饰符  (权限的大小 看访问时的位置) public 公共的,在任意地方都可以访问 protected保护的 位于两者之间 private私有的 在类定义的大括号内访问,出了class类就不允许访问了 Private protected public