最近碰到一个问题,在一框架中已经存在了一个类,其中的一个属性是protected,且这个属性只有get方法。项目中需要使用到这个类,但必须修改这个属性的值。
想想只能通过子类来多态来对该属性重新设置值,然后覆盖其get方法。
具体代码如下:
public class Parent {
protected String name = "zhangsan";
public String getName(){
return name;
}
}
public class Child extends Parent {
protected String name = "wangwu";
public void setName(String name){
this.name = name;
}
@Override
public String getName(){
return name;
}
public static void main(String[] args){
Child child = new Child();
child.setName("lisi");
Parent p = child;
System.out.println(p.getName());
}
}
分享到:
相关推荐
编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。而运行时多态则是通过方法的重写(Overriding)和接口实现实现,它依赖于对象的实例化类型而非声明类型。 1. ...
多态是指一个接口可以有多种不同的表现形式或行为。在C++中,多态主要通过虚函数实现。当基类指针或引用指向派生类的对象时,调用虚函数会根据实际的对象类型来执行相应的函数实现,这就是动态绑定或运行时多态。在...
本文介绍了Java多态在实际应用中的体现,通过一个示例程序展示了如何使用抽象类、继承和接口等特性实现多态。 首先,文档中定义了一个抽象类Shape,这个类是所有形状类的基类,它提供了一个抽象方法area(),用于...
在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种不同的数据类型。多态性使得程序更加灵活,可扩展性更强,能够提高代码的重用率和可维护性。在这个名为“6_7duotai...
编译时多态主要是通过方法重载(Overloading)实现,即在一个类中定义多个同名但参数列表不同的方法。运行时多态则依赖于方法重写(Overriding),即子类对父类已有的非final和非静态方法进行重新定义。 例如,假设...
在这个"经典C#多态的范例"中,我们可能看到一个基类(Base Class)定义了至少一个虚方法,然后由一个或多个派生类(Derived Classes)继承这个基类并重写了该虚方法。例如,基类可以定义一个名为`Talk()`的方法,...
在实际的简单应用程序中,多态和派生可以用来创建具有通用行为的组件,然后根据需要进行扩展。例如,你可以设计一个图形库,基类`Shape`有一个`draw()`方法,然后派生出`Circle`、`Rectangle`等具体形状的类,每个类...
最后,通过具体的设计模式示例展示了继承和多态在软件架构中的重要作用和实际应用,如工厂模式、策略模式等。文章还包括了一些进阶技巧,如接口与抽象类的区别与使用、动态绑定与静态绑定、Java反射与Lambda表达式的...
在`main`方法中,我们创建了`UnderGraduate`和`Graduate`的对象,并通过`StudentManager`进行操作,显示了不同类型的“学生”对象可以被同一个方法处理,这就是多态的直观表现。 总结来说,这个实验报告通过实际...
在实际应用中,多态常常体现在方法的调用上。例如,在`Test.java`文件中,`show()`方法接收Animal类型的参数,然后根据传入的对象实际类型执行不同的操作。这是通过`instanceof`关键字和向下转型来实现的。 另外,...
在编程领域,多态(Polymorphism)是面向对象编程中的一个重要概念,它允许我们用一个接口处理多种不同的数据类型。多态性使得程序更加灵活,可扩展性更强,能够提高代码的重用率。本练习案例将深入探讨多态的常见...
总结来说,"C++程序设计-封装、继承多态应用示例"是一个很好的教学资源,它通过一个生动的龙与人战斗场景,帮助初学者理解并实践了面向对象编程的关键概念。通过这个示例,学习者不仅可以了解这些理论知识,还能通过...
这个例子展示了多态在C#中的实际应用,它使得计算器可以根据用户的需求选择不同的计算策略,同时保持了代码的整洁和模块化。通过这种设计,如果需要添加新的计算功能或修改现有功能,只需要扩展或修改相应的子类即可...
现在,如果我们创建一个 Lady 对象,并将其设置为 Cat、Dog 或 Bird 对象,我们可以调用 Lady 对象的 enjoy 方法,这时 JVM 会根据 Lady 对象的实际类型来调用相应的 enjoy 方法: ```java Lady lady = new Lady(...
本项目旨在通过一个实际的控制台应用实例,帮助开发者深入理解这些概念。 封装是面向对象编程的核心概念之一,它涉及到将数据和操作这些数据的方法捆绑在一起,形成一个独立的单元——类。在C#中,我们可以使用访问...
内容概要:本文详细介绍了Python中的面向对象编程(OOP)基础知识,包括类的定义和使用、继承、封装、多态和...阅读建议:读者应先具备基本的Python编程知识,逐步阅读每一个示例代码,通过动手实践来巩固所学知识。
多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个方面:**编译时类型与运行时类型的不同**...
本项目旨在通过实际操作来深入理解和应用这两个概念。 首先,让我们理解“继承”。继承允许一个类(子类)从另一个类(父类)中获取属性和方法,而无需重新编写代码。在C#中,我们可以使用`: base`关键字来指定父类...