关于继承

子类能继承父类的那些方法

子类是对父类的一种扩展,子类会从父类继承绝大多数的方法,可是具体有那些呢,又有那些不能被子类继承呢,本文主要就是我为了总结而写的,可能会不全。code

首先子类不能继承父类用private修饰的私有方法

package com.z.extend;

public class TestExtendsTwo {
public static void main(String[] args) {
person person=  new person();
person.eat();
}
}
class Dog {
private void eat() {
    System.out.println("狗吃?");
}  
}
class BlackDog extends Dog{

}

如上代码当你尝试调用父类的私有方法时会提示你找不到这个方法,同理被final修饰的方法也不能找到blog

子类也不能继承父类的构造方法

package com.z.extend;

public class TestExtends {
public static void main (String[] args) {
    student st= new student();
}
}

class person {
public  person() {
    System.out.println("这是一我的");
}
}
class student extends person{
public student() {
    System.out.println("这是一个学生");
}
//  public  person() {
//      
//  }
}

当你写出以下代码是出现这样好像子类能继承父类的构造方法,是这样吗?继承

如今咱们把我注释掉的代码打开接口

报错了! 若是子类继承了父类,那为何不能重写方法呢?class

实际上实例代码中子类并无继承父类的构造方法,在最开始好像继承了,是由于子类在写构造方法的时候默认在构造方法的最前列有一行super() 所以在实例化构造的时候回调用父类的构造,并非继承了父类的构造扩展

子类能不能继承父类中实现了接口的方法

固然能,在父类实现接口的时候,实现接口的方法其实就已是一个父类的普通方法了,既然不特殊有有什么资格不被子类锁继承呢,答案是确定的。List

关于接口和子类还有一个比较有趣的现象,子类和父类同时实现了同一个接口方法

这中状况并非没有的,好比ArrayList实现了List这个接口,ArrayList的抽象父类AbstractList一样实现了List接口。这种状况子类并不须要特地的去重写接口中的抽象方法,由于父类已经帮忙作了这个操做,就想上面说了,接口中的抽象方法被重写后就至关因而一个普通的方法,因此这个方法其实已经被子类继承,就算咱们不特地重写,它也是被重写过的(虽然是和父类同样)im

相关文章
相关标签/搜索