public class _01_Super {
public static void main(String[] args) {
Manager manager = new Manager();
manager.test1();
}
}
*
* 子类构造方法使用super()调用父类的构造方法
* 1 创建对象
* 2 初始化父类属性
*
* 构造方法私有化后该类不能被继承,子类构造方法中super()通过调用父类构造方法实现继承,
* 由于构造方法私有化,不能被其他类访问,也就是没有权限
*
* this和super为什么必须出现在构造方法第一行?(不能同时出现)
* super():调用父类构造,初始化父类属性,并且创建对象(最终会调用到Object,通过Object创建对象)
* 既然是创建对象,那super必须在第一行,构造方法还有初始化成员属性的功能
* 成员属性想要初始化,必须有他的存储空间,而这个空间在对象中,也就是对象new出来的内存地址
* 所以要保证现有对象,才能初始化
* 所以super必须在第一行
* this():重载调用当前类的其他构造方法
* 保证现有对象
* */
public class _02_Super {
public static void main(String[] args) {
Sub sub = new Sub();
}
}
class Sup {
public Sup(){
System.out.println("父类构造");
}
}
class Sub extends Sup{
public Sub(){
this(2);
System.out.println(this);
System.out.println("子类构造");
}
public Sub(int i){
super();
System.out.println("子类构造11111");
}
}
public class Employee {
String name = "李四";
static int age = 18;
public void work(){
System.out.println("员工工作");
}
}
public class Manager extends Employee {
String name = "张三";
static int age = 19;
public void work(){
System.out.println("经理监督员工工作");
}
public void test1(){
this.work();
work();
super.work();
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
System.out.println(age);
System.out.println(super.age);
}
}