旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

JAVA继续中子父类的组织要领【JAVA教程】,继承,构造方法

作者:搜教程发布时间:2019-11-30分类:JAVA教程浏览:82评论:0


导读:起首,组织要领自身会有一个隐式的无参组织(默许):①不写组织要领,类中的第一行代码现实上有一个默许的无参组织(体系会隐式为你写好)publicclassStuden...

起首,组织要领自身会有一个隐式的无参组织(默许):

①不写组织要领,类中的第一行代码现实上有一个默许的无参组织(体系会隐式为你写好)

public class Student {
        private String name;
//        public Student() {}      隐式地“写”在这里,你看不见
//  Strudent类中虽然没有写组织要领,但相当于有上面的无参组织
//   只不过是隐式的,你看不见
}

(引荐视频:java视频教程

②只写带参组织要领,相当于只要该带参组织要领(隐式的无参组织会被屏障疏忽掉,视为无效)

public class Student {
        private String name;
        public Student(String name) {
            this.name=name;
        }
//  此时本来Strudent类中的隐式的无参组织要领被屏障了,无效了
//  类中只要带参组织
}

③若想同时拥有没有参和带参组织,必需显式地写出无参和带参组织要领

public class Student {
        private String name;
        public Student() {}
// 显式地将无参组织写出来        
        public Student(String name) {
            this.name=name;
        }
//  若想Strudent类中拥有没有参组织要领,必需显式地写出来
}

进一步连系继续,就需要考虑到子父类:

④在子类的组织要领(无论是无参和有参)中,要领中的第一行代码现实上都隐式地包含了父类的无参组织要领

即: super()

public class Stu extends Student {
    private String name;
    public Stu() {
    // super();
    // 在子类的无参组织中,super()是隐式的“写”在这里的
    }
    
    public Stu(String name) {
    // super();
    this.name=name;
    // 在子类的带参组织,上面的super()一样也是隐式的“写”在这里的
    }
}

这就是为何,挪用子类的组织要领时,都邑先挪用父类的无参组织要领了,因为默许的super()存在。

⑤同理,相似与上面的②,此时若写一个有参组织,super(xx)会把隐式的super()屏障掉

public class Stu extends Student {
    private String name;
    
    public Stu(String name) {
    // super();  本来隐式写在这里的super()被屏障了,无效了
    super(name);
    
    // 在子类的带参组织, 因为的super(name)的存在,super()无效了
    //此时子类的带参组织中,只要super(name)
    }
}

这就是为何当父类没有没有参组织(即只要带参组织——对应状况②)时,子类的组织要领编译没法经由过程。这是因为子类的组织函数(带参或无参)将挪用父类的无参组织函数。 因为编译器试图向子类中的2个组织函数中插进去super() ,但父类的默许组织函数未定义,因而编译器会报告毛病音讯。

要处理这个问题,只需要

1)增加一个无参组织函数给父类——显式地在父类中增加无参组织

2)删除父类中自定义的有参组织函数——等价于恢复了默许的无参组织

3)将 Super(XXX) 增加到子类组织函数——经由过程⑤的本来来屏障默许的super()

本文来自ki4网,java教程栏目,迎接进修!

以上就是JAVA继续中子父类的组织要领的细致内容,更多请关注ki4网别的相干文章!

标签:继承构造方法


欢迎 发表评论: