• 面向对象编程(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

     

  • 相关阅读:
    trueStudio笔记
    C笔记
    printf打印输出
    DB9针和DB25针串口的引脚定义
    通信单位
    简单工厂
    不同进程之间发送消息将指定界面置顶
    Delegate event 委托事件---两个From窗体使用委托事件
    Winfrom窗体无法关闭问题--检查是否存在重写
    自定义控件添加事件
  • 原文地址:https://www.cnblogs.com/arxk/p/5244461.html
Copyright © 2020-2023  润新知