2

我是 Java 初学者,我正在研究子类和超类。

我知道您可以将不在超类中的值/属性/行为添加到子类中,以使其更加“特定于任务”。

但我的问题是,我可以从子类中删除属于超类的属性或行为值吗?

4

4 回答 4

7

简单的回答:

不,你不能也不应该!

超类具有属性应该总是有意义的。

看看这个:Liskov Substitution Principle

于 2013-08-16T08:04:03.603 回答
1

extend意味着继承。对于可以继承和不能继承的内容,您没有精确的选择。

如果父类决定公开一些公共变量等,子类不能改变它。

如果父类不想公开某些字段,可以将其标记为private.

另外:一个类应该为扩展它而开放,但为改变它而关闭。

于 2013-08-16T08:07:34.290 回答
0

您不能从子类中删除超类的变量和方法,但您可以在子类中隐藏字段并覆盖方法:

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");
    }
} 
于 2013-08-16T09:09:24.180 回答
0

您可能想查看访问级别修饰符:http ://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

于 2013-08-16T08:08:50.903 回答