zoukankan      html  css  js  c++  java
  • 关于父类私有属性在子类构造函数中super调用的解释

    package test;
    
    public class Car {
            private int carMoney;    //汽车租金
            private String carName;   //汽车名字
            private int  carNumb;      //汽车序列号
            private int carryNum;    //载货量
            private int passengerNum;//载客人数
             
            public Car(int carNumb,String carName,int  carMoney,int passengerNum,int carryNum){
                this.carMoney = carMoney;
                this.carName = carName;
                this.carNumb = carNumb;
                this.carryNum = carryNum;
                this.passengerNum = passengerNum;
            }
            public int getCarMoney() {
                return carMoney;
            }
            public void setCarMoney(int carMoney) {
                this.carMoney = carMoney;
            }
            public String getCarName() {
                return carName;
            }
            public void setCarName(String carName) {
                this.carName = carName;
            }
            public int getCarNumb() {
                return carNumb;
            }
            public void setCarNumb(int carNumb) {
                this.carNumb = carNumb;
            }
            public int getCarryNum() {
                return carryNum;
            }
            public void setCarryNum(int carryNum) {
                this.carryNum = carryNum;
            }
            public int getPassengerNum() {
                return passengerNum;
            }
            public void setPassengerNum(int passengerNum) {
                this.passengerNum = passengerNum;
            }
          
          
            public void showInfo() {
            // TODO Auto-generated method stub
            }
          
            public static void main(String[] args){
                Car as=new Car(0,"sende",200000,23,32);
                System.out.println(as.carMoney);
                /**
                 * 
                 * 子类可以继承父类的变量
                 * ①子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。
                 * ②子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同,子类就隐藏从父类继承来的方法(方法的重写)。
                 * ③在子类中允许有一个方法和父类的方法名字相同而类型不同。
                 * 
                 * 在这个测试类中可以看到,可以直接使用类对象获取父类中的属性,即使该属性是私有属性,而使用其子类的对象获取对应属性,却无法使用对象名.属性,
                 * 只能通过公有的get方法获取属性,可以看出在子类的构造方法中的该 变量不是子类的,而是父类的,super关键字的作用是调用父类的构造方法,且必须
                 * 放在构造器的首行 
                 * this和super分为调用和引用。只可以引用父类构造器,不可以调用。引用只可以出现在构造器的第一行。
                 * super引用的是父类的构造方法而不是父类的属性,如果将父类的构造方法变为私有你就可以发现子类的使用super的构造出错了。因为super调用的使父类
                 * 的构造方法,所以在走父类构造器中的this代表的是父类,赋值给的属性也是父类的,这里子类中继承的感觉是父类属性的一个映射,因为它受到父类中的修饰
                 * 词的影响,不完全属于子类
                 * 不知道正确不正确,我的看法,欢迎指出问题,谢谢
                 */
                Sedan sd=new Sedan(0,"sende",200000,23,32);
                System.out.println(sd.getCarNumb());
                
            }
            }
          
        class Sedan extends Car{
            public Sedan(int carNumb,String carName,int  carMoney,int passengerNum,int carryNum){
                super(carNumb,carName,carMoney,passengerNum,carryNum);
            }
        }
         
        class Pickup extends Car{
            public Pickup(int carNumb,String carName,int  carMoney,int passengerNum,int carryNum){
                super(carNumb,carName,carMoney,passengerNum,carryNum);
            }
        }
  • 相关阅读:
    jqgrid 重新加载,表头错乱问题
    TortoiseSVN 安装时出现 please install the universal crt
    随意下载:afinal jar
    Android com.daimajia.slider.library.SliderLayout 去掉底部半透明标题背景
    MUI ios下用video标签默认全屏播放
    ARouter学习随笔
    [总]Android高级进阶之路
    Android冷启动优化
    Dagger2源码浅析
    Fragment与Activity的生命周期对比
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5511206.html
Copyright © 2011-2022 走看看