有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

属性Java初学者:子类和超类可以删除值吗?

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

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

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


共 (4) 个答案

  1. # 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");
        }
    } 
    
  2. # 3 楼答案

    简单回答:

    不,你不能也不应该

    超类有一个属性应该总是有意义的

    看看这个:Liskov Substitution Principle

  3. # 4 楼答案

    extend意味着继承。对于你能继承什么和不能继承什么,你没有一个精确的选择

    若父类决定公开一些公共变量等,子类就不能改变它

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

    另外:一个类应该是开放的,可以扩展它,但是关闭的,可以更改它