属性Java初学者:子类和超类可以删除值吗? 3 月,2 周 Questions & Answers 2854 我是Java初学者,正在研究子类和超类 我知道您可以将不在超类中的值/属性/行为添加到子类中,使其更“特定于任务” 但我的问题是,我能从子类中删除属于超类的属性或行为值吗
# 2 楼答案 不能从子类中删除超类的变量和方法,但可以在子类中隐藏字段和重写方法: class Employee { String name = "Employee"; public void work() { System.out.println("Do some work"); } } class Programmer extends Employee { String name = "Programmer"; public void work() { System.out.println("Write programs"); } }
# 4 楼答案 extend意味着继承。对于你能继承什么和不能继承什么,你没有一个精确的选择 若父类决定公开一些公共变量等,子类就不能改变它 如果父类不想公开某些字段,可以将其标记为private 另外:一个类应该是开放的,可以扩展它,但是关闭的,可以更改它
# 1 楼答案
您可能想看看访问级别修饰符:http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
# 2 楼答案
不能从子类中删除超类的变量和方法,但可以在子类中隐藏字段和重写方法:
# 3 楼答案
简单回答:
不,你不能也不应该
超类有一个属性应该总是有意义的
看看这个:Liskov Substitution Principle
# 4 楼答案
extend
意味着继承。对于你能继承什么和不能继承什么,你没有一个精确的选择若父类决定公开一些公共变量等,子类就不能改变它
如果父类不想公开某些字段,可以将其标记为
private
另外:一个类应该是开放的,可以扩展它,但是关闭的,可以更改它