黑马程序员技术交流社区

标题: 懂继承的兄弟进来瞧瞧 [打印本页]

作者: ileslie    时间: 2016-7-22 22:57
标题: 懂继承的兄弟进来瞧瞧
class A{
    private static void show1(){
        
        System.out.println("a");
    }
}

class B extends A{
    public  void show1(){
        System.out.println("b");
        
    }
}

我实验了下  既然能运行,为什么呢


作者: qetu001212    时间: 2016-7-22 23:17
这个我也想知道,这个不是重写,但是到底有什么意义呢?
作者: Buer    时间: 2016-7-22 23:22
qetu001212 发表于 2016-7-22 23:17
这个我也想知道,这个不是重写,但是到底有什么意义呢?

父类私有的方法,不继承。有什么问题吗
作者: xuexi1922622501    时间: 2016-7-23 00:25
B类中的show1能够运行,父类中的private是被子类继承下来的但是子类不能访问,子类在创建实例的时候默认会先调用父类的构造方法,所以子类堆内存中有一部分是父类的对象,但是父类的私有变量时无法访问到的,而且static修饰方法是静态方法,是属于类的,不能够被重写,所以你的子类有一个show1方法对父类的show1方法没有影响。
作者: xuexi1922622501    时间: 2016-7-23 00:26
Buer 发表于 2016-7-22 23:22
父类私有的方法,不继承。有什么问题吗

兄弟,父类的私有方法是被继承下来的 知识不能够被访问
作者: 1208124957    时间: 2016-7-23 00:35
静态方法不能被重写吧   静态方法是类编译的时候就加载完成的   是属于类的方法   
作者: HeiMa2Wangkunpe    时间: 2016-7-23 00:41
父类没有给出足够的信息,没有成员变量,没有可以重写的方法,注意:父类私有的方法不能别子类继承,所以说,这个继承没有任何用处
作者: 迷茫不堪的年纪    时间: 2016-7-23 00:57
肯定可以啊, 他只是重写了 那个方法, 或者叫覆盖更贴切
作者: jundehuang    时间: 2016-7-23 08:38
我认为这不是重写,应该叫重载
作者: 惊鸿游龙    时间: 2016-7-23 09:08
这个我也想弄明白
作者: ileslie    时间: 2016-7-24 13:30
迷茫不堪的年纪 发表于 2016-7-23 00:57
肯定可以啊, 他只是重写了 那个方法, 或者叫覆盖更贴切

我看到书上说  静态只能覆盖静态 或被静态覆盖,看到这个代码就有点懵
作者: rockphoenix    时间: 2016-7-24 15:06
父类私有变量及方法无法被子类继承,子类里那个show1()方法既不是重写也不是重载,只是恰好父类那个方法叫show1,子类的方法也恰好叫show1,两者并无关系
作者: ileslie    时间: 2016-7-24 17:25
rockphoenix 发表于 2016-7-24 15:06
父类私有变量及方法无法被子类继承,子类里那个show1()方法既不是重写也不是重载,只是恰好父类那个方法叫s ...

我觉得你说的有道理,这里没有重写!
作者: q123123    时间: 2016-7-24 22:46
rockphoenix 发表于 2016-7-24 15:06
父类私有变量及方法无法被子类继承,子类里那个show1()方法既不是重写也不是重载,只是恰好父类那个方法叫s ...

感觉好像是这样的样子
作者: itismyhao    时间: 2016-7-24 23:40
子类根本不知道父类有这个方法。
所以子类的那个show1就是自己的特有方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2