/*
要点: this();和super();访问父类.
注意: 如果父类无 无参构造,子类可用this(name,age);来访问子类的有参构造,继而访问父类的有参构造
还可以用子类的有参构造中用super();来访问父类的有参构造.
如果子类有无参和有参构造,父类没有空参构造,可以使用this(xx,xx);来访问本类的有参构造.
通过本类的有参构造访问父类的有参构造.
总结: 父类如果无无参构造,在子类可以用this(XXX,XXX);和super(XXX,xxx);来访问父类的有参构造.
this():通过访问子类的有参构造来,子类的有参构造通过super()来访问父类的有参构造.
super():可以通过子类的有参构造函数直接访问父类的有参构造.
本例中打印的是: 父类有参构造->子类有参构造 -> 子类无参构造 -> -- -> 父类有参构造->子类有参构造 ->18--xxx; */ - class Demo_extends {
- public static void main (String[] args){
- Son s1 = new Son();
- System.out.println("----------");
- Son s2 = new Son(18,"xxx");
- //System.out.println(getName()+"----"+getAge());//注意:调用变量和函数都是用对象来调用的.不能直接写.
- System.out.println(s2.getName()+"----"+s2.getAge());
- }
- }
- class Father {
- private String name;
- private int age;
- /*public Father(){ //Father类的空参构造
- System.out.println("父类的空参构造");
- }*/
- public Father(int age,String name){//Fatehr类的有参数构造
- this.age = age;
- this.name = name;
- System.out.println("父类的有参构造");
- }
- public void setName(String name){
- this.name = name;
- }
- public String getName(){
- return name;
- }
- public void setAge(int age){
- this.age = age;
- }
- public int getAge(){
- return age;
- }
- }
- class Son extends Father {
- public Son(){ //son类的空参构造
- this(18,"xxx");
- //super(); //第一句隐藏super();
- System.out.println("子类的无参构造");
- }
- public Son(int age,String name){ //son类的有参数构造
- super(18,"xxx");
- System.out.println("子类的有参构造");
- }
- }
复制代码
|