java中继承加不加super_java-继承super的使用

public class Father {

protected String name;

int age;

Father(){

System.out.println("Father无参构造函数");

}

Father(String name){

System.out.println("person的有参数构造函数 ");

}

//public、private、protected、子类能继承的是public、protected

//缺省的是受私有的,不能继承,

//java不支持多继承,C++支持,

//extends:扩展,不是继承的意思

void jump(int lenth){

System.out.println("lenth = "+lenth);

}

protected void jump(int num,int a) {

// TODO Auto-generated method stub

System.out.println("num = "+num+"a = "+a);

}

static void fly(){

System.out.println("I can fly!");

}

}

public class Daughter extends Father {

Daughter(){

//super();

//在子类的构造函数当中,必须调用父类的构造函数,

//super();默认调用父类的无参构造函数

System.out.println("Daughter的无参数构造函数");

}

Daughter(String name){

super("");

System.out.println("Daughter的带参数构造函数:name = "+name);

}

public static void main(String[] a){

/*不论你使用的是自己的哪一个构造函数,只要你不指明使用父类的哪个构造函数(如果父类由多个构造函数)

父类都会在你调用自己的构造函数的同时,先调用自己的默认构造函数,如果父类由切仅有一个有参数的构造函数,那么就要小心了,

因为当你调用自己的构造函数的同时是父类会强加给你一自己的构造函数,而父类给你强加的构造函数确实有参数的,它不会自己去加一个参数进去,

所以它还是以super()的形式给你,那么此时就相当于你自己在自己的构造函数中添加了"super()"这么一段代码,这当然是错的啦,因为父类没有这个构造函数

所以你需要把正确的形式写出来"super("")",所以这个有点强买强卖的意思。如果父类由一个无参和一个有参数的构造函数,那么你就无需指明了,因为父类给你强加的这个构造函数是有的

*/

new Daughter();

new Daughter("Daughter");

//在静态方法中不能super

//super.jump(100);

//super();

}

}

/*

* 为什么父类会把自己的构造函数强加给子类,因为子类不能够继承父类的

* 构造函数,

* 而且,构造函数一般承载在初始化成员变量的作用,而子类如果无法使用父类的构造函数

* 那么在初始化继承来成员变量的时候就需要自己再写一遍方法。

* */

原文:http://blog.csdn.net/u012360598/article/details/41607985

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值