Java实例属性覆写问题

简介: Java实例属性覆写问题

先看一段Python代码

实现效果是子类和父类共用一个 sayHello() 方法,通过覆写属性name 输出不同的属性

class Parent():
    name = "parent"

    def getName(self):
        return self.name

    def sayHello(self):
        print(self.name, "-", self.getName())


class Child(Parent):
    name = "child"


if __name__ == "__main__":
    parent = Parent()
    print(parent.getName())
    parent.sayHello()

    child = Child()
    print(child.getName())
    child.sayHello()

输出效果满足预期要求

parent

parent - parent
child
child - child

再来看Java代码

class Parent {
private String name = "parent";

public String getName() {
return name;
}

public void sayHello() {
System.out.println(name + " - " + getName());
}
}

class Child extends Parent {
private String name = "child";
}

public class Demo {
public static void main(String[] args) {
Parent parent = new Parent();

System.out.println(parent.getName());
parent.sayHello();

Child child = new Child();
System.out.println(child.getName());
child.sayHello();
}
}

输出结果和预期不一样

parent
parent - parent
parent
parent - parent

修改一下子类,覆写父类的getName()方法

class Parent {
private String name = "parent";

public String getName() {
return name;
}

public void sayHello() {
System.out.println(name + " - " + getName());
}
}

class Child extends Parent {
private String name = "child";

// 增加方法覆写
@Override
public String getName() {
return name;
}
}

public class Demo {
public static void main(String[] args) {
Parent parent = new Parent();

System.out.println(parent.getName());
parent.sayHello();

Child child = new Child();
System.out.println(child.getName());
child.sayHello();
}
}

输出结果看到,通过覆写方法获取属性的方式可以获取子类属性,直接获取的属性还是父类中的属性

parent
parent - parent
child
parent - child
            </div>
目录
相关文章
|
3月前
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
202 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
11天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
1月前
|
JSON 前端开发 JavaScript
Java属性为什么不能是is开头的boolean
在Java实体类中,阿里规约要求boolean属性不应以is开头。文章通过实际案例分析了isUpdate字段在JSON序列化过程中变为update的问题,并提供了自定义get方法或使用@JSONField注解两种解决方案,建议遵循规约避免此类问题。
Java属性为什么不能是is开头的boolean
|
3月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
3月前
|
Java
让星星⭐月亮告诉你,Java NIO之Buffer详解 属性capacity/position/limit/mark 方法put(X)/get()/flip()/compact()/clear()
这段代码演示了Java NIO中`ByteBuffer`的基本操作,包括分配、写入、翻转、读取、压缩和清空缓冲区。通过示例展示了`position`、`limit`和`mark`属性的变化过程,帮助理解缓冲区的工作原理。
39 2
|
4月前
|
Java
Java——接口的使用实例
Comparable接口用于自定义类的对象比较。通过实现此接口并重写`compareTo`方法,可以定义自定义类型的比较规则。 接下来介绍了Comparator接口,它提供了一种更灵活的比较方式。通过实现Comparator接口并重写`compare`方法,可以根据不同属性定义不同的比较规则。例如,定义一个`BrandComparator`类来比较汽车的品牌。 最后,介绍了Cloneable接口,用于实现对象的克隆。实现该接口并重写`clone`方法后,可以创建对象的浅拷贝或深拷贝。浅拷贝仅复制对象本身,深拷贝则会递归复制所有成员变量。
43 4
Java——接口的使用实例
|
3月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
90 2
|
3月前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
160 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
3月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
275 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
4月前
|
存储 Java
Java之静态(static)与实例(instance)
Java之静态(static)与实例(instance)