在继承出现之前,给一个类中的成员属性赋值有4种方式:
1)显示初始化 2)构造方法 3)setXxx方法 4)在程序中创建对象后再进行赋值(成员属性没有被私有的情况)
当这个类被另外一个类继承后,即成为了父类,而且成员属性都被私有,这时有几种方式赋值呢?
1、父类来赋值:父类仍然可以通过上述的方式给成员属性赋值
2、子类来赋值:因继承了父类,相同的属性不会再去定义了,因此显示初始化显然没戏了;而setXxx方法呢得先创建子类的对象再去调用,创建对象就伴随着构造方法,因此也归结到构造方法这;
1)通过子类的有参构造方法:
① 程序中创建对象new Son(含实参),默认调用父类的空参构造方法,这步没太大用,接下来涉及到这一步的就不再重复说了。之后调用自己的含参构造方法public Son(含形参),而子类含参构造方法中是无法通过this.name=name赋值给成员变量(因为父类私有,子类无法继承,无法直接访问),所以还是得调用父类的有参构造函数super(含形参)进行赋值,因为在程序中传入了实参,因此在这就不用再赋实参了。
2)通过子类的无参构造方法:
① 程序中创建对象new Son(),默认调用空参构造方法public Son(),然后在该构造方法中调用父类的含参构造函数super(含实参)进行赋值,然后这有一个细节需要理解,因为在程序中是没有传入具体实参的,因此在调用父类有参构造函数时得附上具体的实参;
② 程序中创建对象new Son(),默认调用无参构造方法public Son(),然后该构造方法里调用自己的含参构造函数this(含实参),在子类该含参的构造方法第一行调用父类的有参构造函数super(含形参),和之前一样,因为在程序中是没有传入具体实参的,因此在调用自己有参构造函数this(有参)时得赋上具体的实参;