关于Java重写

WMTXJ 2018-06-02 03:14:05
class A{
private void a(){
System.out.println("A");
}
}
class B extends A{
public void a(){
System.out.println("B");
}
}

有一点不太理解。
A a = new B();
时我知道B并不是重写A的方法。那么我为什么a.a()调用不了呢。求各位不吝赐教。
...全文
1033 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WMTXJ 2018-06-06
  • 打赏
  • 举报
回复
非常非常感谢大家,当时绕在继承中static、非静态啥的没出来。傻了。结贴了。谢谢大家。分数不多。大体分了。
虫二飞呀 2018-06-05
  • 打赏
  • 举报
回复
访问修饰符错了,私有继承有毛用?
zjfchinese 2018-06-05
  • 打赏
  • 举报
回复
对子类暴露父类的方法,好像方法一般定义为protected
  • 打赏
  • 举报
回复
A a = new B(); 时我知道B并不是重写A的方法。 送你一句白话:能点出来什么看类型,调用的什么看对象 你a. 能点出来的要看类型,也就是你的A类型,private a()只能内部用用,外面是不能 点出来的
oyljerry 2018-06-02
  • 打赏
  • 举报
回复
你private,不管你是a,b都不能实例访问
verejava 2018-06-02
  • 打赏
  • 举报
回复
Java 面向对象 之 方法的覆盖 重写 http://www.verejava.com/?id=16992799039246
zycxnanwang 2018-06-02
  • 打赏
  • 举报
回复

class A {
	private void a(){
		System.out.println("A");
	}
	
	public void b() {
		a();
	}
}

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

public class Test{
	public static void main(String args[]) {
		A a = new B();
		a.b();
	}
}
楼主思考一下private的用法 确实没有构成多态, 由于访问限制的问题,一个private 一个public 楼主可以参考一下这篇blog https://blog.csdn.net/zycxnanwang/article/details/77416208

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧