博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向对象编程(OOP)————修饰符
阅读量:5165 次
发布时间:2019-06-13

本文共 4510 字,大约阅读时间需要 15 分钟。

一.类的修饰符

       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     //静态 static128     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

 

 

转载于:https://www.cnblogs.com/arxk/p/5244461.html

你可能感兴趣的文章
九度0J 1374 所有员工年龄排序
查看>>
微信小程序图片使用示例
查看>>
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
查看>>
GitHub 优秀的 Android 开源项目
查看>>
CentOS 网络设置修改
查看>>
二分图
查看>>
python小白-day5 random模块
查看>>
Git Tips
查看>>
2019春第一次课程设计报告
查看>>
msp430项目编程13
查看>>
【IIS】IIS 7.0/7.5 绑定
查看>>
[SQL] 命令远程恢复数据库
查看>>
用Python3实现的Mycin专家系统简单实例
查看>>
TortoiseSVN tutorial
查看>>
poj-2376 Cleaning Shifts (排序+贪心)
查看>>
mssql 创建触发器
查看>>
2.python数据结构的性能分析
查看>>
jquery操作select(取值,设置选中)
查看>>
在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)...
查看>>
1.开发准备
查看>>