A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ileslie 中级黑马   /  2016-7-22 22:57  /  627 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class A{
    private static void show1(){
        
        System.out.println("a");
    }
}

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

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

14 个回复

倒序浏览
这个我也想知道,这个不是重写,但是到底有什么意义呢?
回复 使用道具 举报
Buer 来自手机 中级黑马 2016-7-22 23:22:13
藤椅
qetu001212 发表于 2016-7-22 23:17
这个我也想知道,这个不是重写,但是到底有什么意义呢?

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

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

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

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

感觉好像是这样的样子
回复 使用道具 举报
子类根本不知道父类有这个方法。
所以子类的那个show1就是自己的特有方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马