java的子类继承父类过程是怎样的?解释一下这个程序运行的结果。

publicclassFatherChild{publicstaticvoidmain(String[]args){//主方法开始Childc=newChild();//... public class FatherChild {
public static void main(String[] args) { // 主方法开始
Child c = new Child(); // 实例化
}
}

class Father {
public Father() {
System.out.println("父类无参构造函数");
}

public Father(String name) {
System.out.println("父类有参构造函数");
}
}

class Child extends Father {
public Child() {
this("dd");
System.out.println("子类无参构造函数");
}

public Child(String name) {
super("dd");
System.out.println("子类有参构造函数");
}
展开
 我来答
历盆郁7
2013-07-20 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:1004万
展开全部

其实就是你对this 和super的理解不好,好好琢磨下。实在不行就硬记下来,等以后学得多了,自然而然就理解了。

给你个注释,有编号,你沿着编号好好看看。

public class FatherChild {
    public static void main(String[] args) {
        Child c = new Child();// 1.创建Child对象,调用默认构造器
    }
}

class Father {
    public Father() {
        System.out.println("父类无参构造函数");
    }

    public Father(String name) {// 6.父类有参构造器
        System.out.println("父类有参构造函数");
    }
}

class Child extends Father {
    public Child() { // 2.默认构造器.创建Child对象
        this("dd");// 3.调用本类的有参构造器
        System.out.println("子类无参构造函数");
    }

    public Child(String name) {// 4.有参构造器
        super("dd");// 5.调用父类有参构造器
        System.out.println("子类有参构造函数");
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿刚炖蛋
2013-07-20 · TA获得超过3005个赞
知道大有可为答主
回答量:1789
采纳率:92%
帮助的人:1045万
展开全部

你好!!

1.   Child c = new Child();   //这句开始进入Child类的无参构造函数

2.
     public Child() {
         this("dd");          //调用了本类的一个有参的构造函数    --->>见 3
         System.out.println("子类无参构造函数");
     }
 
3. 
    public Child(String name) {
         super("dd");     //调用了父类的有参的构造函数             --->>见 4
         System.out.println("子类有参构造函数");
    }
      
4.
    public Father(String name) {
         System.out.println("父类有参构造函数");
    }

   所以最后的打印内容为:
       父类有参构造函数
       子类有参构造函数
       子类无参构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友799369c
2013-07-20 · TA获得超过562个赞
知道小有建树答主
回答量:515
采纳率:66%
帮助的人:111万
展开全部

lz的继承好绕啊,学习了。

  1. 实例化child的时候,无参,先运行public Child();但是这里面有this(dd),这意思是运行Child(dd)。

  2. 于是运行有参的Child(dd),但是它又super(dd),运行有参的父类也就是father(dd)。

  3. 于是输出顺序是father(dd)——child(dd)——child()

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HYW332147617
2013-07-20 · TA获得超过227个赞
知道答主
回答量:109
采纳率:0%
帮助的人:60.9万
展开全部
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能。用白话来说就是,子类拥有父类的所有,并且比父类更高级。
对构造方法的调用:
1.子类的构造过程中必须调用其基类的构造方法;
2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法;
如果调用super,必须写在子类构造方法的第一行;
3.如果子类的构造方法中没有显式调用基类构造方法,则系统默认调用基类无参数的构造方法;
4.如果子类构造方法中既没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。

就拿你上面的代码来说吧:
//child类集成了father类,此时child类就拥有了父类的所有属性及方法。

class Child extends Father {
//当child类被用new Child();初始化时会调用该无参构造方法,而当该方法中没用super显示调用父类的构造方法时,他会默认调用父类的无参构造方法
public Child() {
//调用本类的有参构造方法(public Child(String name))
this("dd");
System.out.println("子类无参构造函数");
}

public Child(String name) {
//调用父类的有参构造方法
super("dd");
System.out.println("子类有参构造函数");
}

所以执行的结果为:
父类有参构造函数
子类有参构造函数
子类无参构造函数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式