Java构造器的小事情

 关于子类与父类的构造器的小事情一直不是很了解,今天专门抽出空写几行代码,亲自搞清楚,这样印象比较深刻吧.
 首先,构造器是针对类来讲的.
 1.任意一个只继承java.lang类的类.不指定构造器将被由系统自动生成无参的构造器.
比如:

public class Animals(){
}

测试类:

public static void main (String[] args){
    Animals cat = new Animals();
    }

.
.
2.子类的实例化中,会先执行父类无参构造方法,再执行自己的

public class Animals(){
    System.out.println("Animals的构造方法被执行了");
    }
public class Cat extends Animals(){
    }
public static void main(String[] args){
    Cat myCat = new Cat();
    }//结果输出"Animals的构造方法被执行了"

.
.
.
3.父类的构造器不是 无参构造器 时,系统会擦除默认给定的无参构造器.此时,子类对象无法通过无参构造器实例化父类对象,进而实例化自己,必须也要指定显式的构造器给子类

public class Animals{
    public Animals( int i){
    System.out.println("i");
        }
    }
//这样写会报错:
//implict super constructor Animals() is undefined for 
//    default  constructor.Must define an explict 
//    constructor
//Cat的默认构造器无法调用Cat父类无参构造方法Animals().必须要为
//   Cat类显式调用一个构造器
//implict翻译成无参构对不?有点尴尬.要是隐式构造器我就呵呵了
public class Cat{
    }

可以看出,主要是父类无参构造器被擦除了.只要有父类有无参构造器,子类便能正常实例化

public class Cat{
    public Cat(){
    //使用super关键字,写入参数.自动进行方法的重载.
    super.(1);
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值