调用父类构造方法时编译器的走向原理.

 

class Circle
{
 double x,y,r;
 //构造方法初始化
 public Circle(double x,double y,double r)
 {
  this.x=x;
  this.y=y;
  this.r=r;
 }
 public Circle()
 {
 
 }
 /*
  *因为你在Circle类里自己创建了有参构造函数,那么系统不会再自动生成无参的构造函数。
  子类会无条件继承父类无参构造函数,而你父类里没有无参构造函数,子类继承时会报错,这个一定要注意。
  *
  **/
}
public class Cylinder extends Circle
{

    public static void main(String []args)
    {
     Circle pxy=new Circle(1.0,2.0,3.0);
    }
}

/*

请记住:

   子类无条件继承父类无参构造函数,而你在父类定义有参构造函数,系统不在生成无参构造函数,此时父类没有无参构造函数,子类继承既报错,

*/

 

 // 1:无参数构造方法。

class A{ public A()

 {

 

    // 2

    public A(String s)

    {

 

    }

}

 class B extends A

{

   public B(String s)

    { super(s); // 3. }

 

}

说明:如果没有1处的无参数构造方法,那么3处一定要主动调用父类带参数的构造方法。如果有1处的构造方法,那么3处代码可以不要,因为Java会自动默认调用父类的无参数构造方法。

记住一点:在构造子类时,一定会调用到父类的构造方法。所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。

 

1、关键点:构造子类时会先构造父类。
现象:父类的属性和方法,只要不是私有的,子类都可以当作是自己的来用。原因就在于构造子类时,父类也被构造了。
2、构造方法:每个类都会默认存在一个无参构造方法,但当类中存在有参构造方法时,不再默认存在无参构造方法。
3、继承:构造子类时,会默认调用父类的无参构造函数来构造父类。但父类存在有参构造方法时,就找不到父类的无参构造方法了。
4、解决:(1)在父类添加无参构造方法,构造子类时,会默认去调用无参构造方法构造父类。(2)子类构造方法中,显示调用父类的有参构造方法来构造父类。
编译器会自动检测这种继承关系是否正确,不正确就会报错,而不是说在运行时new出父类就可以的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值