A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
        要点:   this();和super();访问父类.
        注意:   如果父类无 无参构造,子类可用this(name,age);来访问子类的有参构造,继而访问父类的有参构造
                   还可以用子类的有参构造中用super();来访问父类的有参构造.

                   如果子类有无参和有参构造,父类没有空参构造,可以使用this(xx,xx);来访问本类的有参构造.
                   通过本类的有参构造访问父类的有参构造.

         总结:  父类如果无无参构造,在子类可以用this(XXX,XXX);和super(XXX,xxx);来访问父类的有参构造.
                          this():通过访问子类的有参构造来,子类的有参构造通过super()来访问父类的有参构造.
                          super():可以通过子类的有参构造函数直接访问父类的有参构造.
         本例中打印的是:  父类有参构造->子类有参构造 -> 子类无参构造 -> -- -> 父类有参构造->子类有参构造 ->18--xxx;
*/
  1. class Demo_extends {
  2.         public static void main (String[] args){
  3.                 Son s1 = new Son();  
  4.                 System.out.println("----------");
  5.                 Son s2 = new Son(18,"xxx");
  6.                 //System.out.println(getName()+"----"+getAge());//注意:调用变量和函数都是用对象来调用的.不能直接写.
  7.                 System.out.println(s2.getName()+"----"+s2.getAge());

  8.         }
  9. }

  10. class Father {
  11.         private String name;
  12.         private int age;

  13.         /*public Father(){                                        //Father类的空参构造
  14.                 System.out.println("父类的空参构造");
  15.         }*/
  16.         public Father(int age,String name){//Fatehr类的有参数构造
  17.                 this.age = age;
  18.                 this.name = name;       
  19.                 System.out.println("父类的有参构造");
  20.         }
  21.         public void setName(String name){
  22.                 this.name = name;
  23.         }
  24.         public String getName(){
  25.                 return name;
  26.         }
  27.         public void setAge(int age){
  28.                 this.age = age;
  29.         }
  30.         public int getAge(){
  31.                 return age;
  32.         }
  33. }

  34. class Son extends Father {
  35.         public Son(){                                                //son类的空参构造
  36.                 this(18,"xxx");
  37.                 //super();                                                //第一句隐藏super();
  38.                 System.out.println("子类的无参构造");
  39.         }
  40.         public Son(int age,String name){        //son类的有参数构造
  41.                 super(18,"xxx");
  42.                 System.out.println("子类的有参构造");
  43.         }
  44. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

9 个回复

倒序浏览
胡兄好见解!!!
回复 使用道具 举报
厉害,顶
回复 使用道具 举报
学习了...
回复 使用道具 举报
学习了 谢谢
回复 使用道具 举报
再续啸傲 来自手机 中级黑马 2015-12-3 21:20:18
地板
get and look look
回复 使用道具 举报
有点复杂啊
回复 使用道具 举报
学习了,this学的复杂,很容易混
回复 使用道具 举报
赞一个,刷个分
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马