当First类中的aMethod方法为public时,程序的运行结果是Second,(似乎是因为重写)
而当First类中的aMethod方法为private时,程序的运行结果又是First,这是为什么啊?想不通当一个类被继承时,它的构造方法 和private方法、属性到底会不会被继承呢?!期待各位指点!class First{
public First(){
aMethod();
}就是这里——>private void aMethod() {
System.out.println("First");
}
}
public class Second extends First{
public void aMethod() {
System.out.println("Second");
}
public static void main(String[]args){
new Second();
}
}

解决方案 »

  1.   

    private型的aMethod方法是不能继承的,因而是不能被子类重写的。
    构造方法无论怎样,都是不能被继承的。
      

  2.   

    private的都不能继承,只对自己可见,可以看下访问权限这一块
    构造方法也是不被继承的,但可以用super关键字来调用
      

  3.   

    子类没有构造的时候会默认使用父类无参的构造
    private方法不会被继承
    所以会是结果first
    public方法会被继承
    如果子类中进行了重写
    结果当然是子类产生的了
      

  4.   

    多谢ls
    不过记得有一次看视频, 老师说所有都会被继承,但private的只是不能直接用罢了,不知道对不对
      

  5.   

    我来说两句: 在父类中声明为public 的方法是公开要被访问的. 子类继承了父类后,重写了该public的方法调用子类时,是会返回刚才重写了的方法的. 当父类中的方法声明为private时, 说明访方法是私有的, 不想被重写. 子类继承了父类后. public void aMethod() { 
    System.out.println("Second"); } , 子类只是自己定义了一个方法而已. 跟父类无关. 要想调用父类的方法, 用super关键字.