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

Posted 安然罒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程(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

 

 技术分享

以上是关于面向对象编程(OOP)————修饰符的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象(OOP)--static修饰符(static变量static方法代码块和静态代码块创建和初始化对象的过程静态导入)

Java面向对象(OOP)--final修饰符 & abstract修饰符

java语言支持oop中的oop是啥

Java面向对象(OOP)--方法回顾及加深

java第五章:面向对象(oop)

oop(面向对象,全程叫object oriented programming)