美文网首页
Java继承之构造器

Java继承之构造器

作者: 面包石头 | 来源:发表于2017-09-14 13:58 被阅读9次

    1.无参构造方法

    • 父类
    public class Person {
        private String name;
        public Person(){
            Log.i("Person constructor...");
        }
    }
    
    • 子类
    public class Man extends Person{
        public Man(){
            Log.i("Man constructor...");
        }
        public static void main(String[] args){
            new Man();
        }
    }
    
    • 运行结果
    sela->Person constructor...
    sela->Man constructor...
    
    • 总结
      从父类到子类一级一级完成构建,子类不用手动调用super()

    2.有参构造方法

    • 父类
    public class Person {
        private String name;
        public Person(String name){
            this.name = name;
        }
    }
    
    • 子类
    public class Man extends Person{
        public Man(){
            Log.i("Man constructor...");
        }
        public static void main(String[] args){
            new Man();
        }
    }
    
    • 结果
    编译报错,提示Implicit super constructor Person() is undefined. Must 
    explicitly invoke another constructor
    
    • 总结
      编译器会帮我们自动创建一个无参的构造方法,但是如果像我们这个父类中,添加一个有参数的构造方法,编译器会以为我们无需他的帮忙自动创建,但是子类里是需要的,所以会报错,解决方法为
    public class Man extends Person{
        public Man(){
            super("");//添加这行
            Log.i("Man constructor...");
        }
        public static void main(String[] args){
            new Man();
        }
    }
    

    相关文章

      网友评论

          本文标题:Java继承之构造器

          本文链接:https://www.haomeiwen.com/subject/ekxdsxtx.html