java语言3大特征之一——多态。
多态为开发提供了很多的便利,为可扩展性提供很大的支持。
public enum Sex {
MALE,FEMALE;
}
Person类:
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void say() {
System.out.println(this.getName() + ":" + this.getAge());
System.out.println("in base");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
Person子类,带有sex属性:
public class PersonWithSex extends Person {
Sex sex;
PersonWithSex() {
}
PersonWithSex(int age, String name, Sex sex) {
super(name, age);
this.sex = sex;
}
public Sex getSex() {
return sex;
}
public void setSex(Sex sex) {
this.sex = sex;
}
public void say() {
System.out.println(this.getName() + ":" + this.getAge() + ":" + this.getSex());
System.out.println("in sub");
}
}
两者均有say()方法。
下面是测试代码:
public class ExtendsTest {
/**
* @param args
*/
public static void main(String[] args) {
Person p1 = new Person("jin", 10);
PersonWithSex pws = new PersonWithSex(20, "gui", Sex.MALE);
Person p2 = new PersonWithSex(30, "randy", Sex.MALE);
p1.say();
pws.say();
p2.say();
}
}
输出结果:
jin:10
in base
gui:20:MALE
in sub
randy:30:MALE
in sub
解:java的引用变量分为编译时类型和运行时类型。上边的p2引用,在编译时属于Person类型,而运行时属于Person子类PersonWithSex类型。所以p2只能调用Person类中的方法,如果试着调用其子类独有的方法,就会出现编译错误。
当我们想再有一个Person的子类时,同样定义了say()方法,这样只要在创建对象时创建新类型的对象,其他的地方就无需改变,这就是多态的好处。还有很多多态的好处,如范型等,慢慢研究喽
分享到:
相关推荐
在这个"多态"案例中,我们可以期待看到如何在实际的代码场景中应用多态概念。 首先,我们需要理解多态的基本概念。在C#中,多态主要体现在方法的重载(Overloading)和方法的重写(Overriding)上。方法的重载是指...
在本实例中,我们将探讨这些关键概念,并通过具体代码示例来展示它们的实际应用。 首先,**接口(Interface)**是Java中的一个重要概念,它是一种完全抽象的类,只能包含常量定义和抽象方法。接口用于定义对象间的...
在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装和继承。...这样的设计提高了代码的可复用性和可扩展性,使得新数据类型或排序算法的添加变得简单,符合面向对象编程的原则。
理解并熟练运用多态,能够极大地提升程序设计的效率和代码的可读性。 首先,我们来详细解释一下多态的概念。多态分为编译时多态和运行时多态。编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中...
现在,让我们回到“关于继承和多态的简单练习”这个主题。在这个练习中,你可能创建了一些类,定义了它们之间的继承关系,并实现了多态的效果。例如,你可能创建了一个`Vehicle`类,然后有`Car`和`Bike`继承自`...
总的来说,多态简单工厂是C#编程中的重要知识点,理解和掌握它们能帮助开发者写出更加灵活、易于维护的代码。通过北大青鸟的C#.NET讲堂学习,我们可以深入理解这些概念,并通过实际操作提升编程技能。
下面是一个简单的多态实例代码: ```java class Base { public void method() { System.out.println("Base"); } } class Son extends Base { public void method() { System.out.println("Son"); } public...
在这个名为“6_7duotai”的压缩包文件中,很可能是包含了一些示例代码,用于演示多态的应用。 首先,我们要理解多态的基本定义。在面向对象编程中,多态分为静态多态(编译时多态)和动态多态(运行时多态)。静态...
在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和方法,从而实现了代码的重用和扩展。多态则是指同一种行为在不同对象上表现...
以下是一个简单的Java示例,展示了如何通过接口实现多态: ```java // 定义一个接口 public interface Parent { public void simpleCall(); } // 实现接口的子类之一 public class Child_A implements Parent { ...
多态的主要作用在于提高代码的灵活性和可维护性。通过多态,可以编写更加通用的代码,减少对具体实现的依赖,从而降低不同类型之间的耦合度。这有助于软件的扩展性和适应性,使得程序更容易应对变化。 ### String、...
在这个“用多态做简单银行系统”的项目中,我们将深入理解如何运用多态性这一核心OOP概念来构建一个银行系统。多态性是面向对象编程中的一个重要特性,它允许我们使用一个通用接口来处理不同类型的对象,从而提高...
这个压缩包"java继承、多态的简单程序.zip"显然包含了一些示例代码,旨在帮助初学者理解这两个概念。接下来,我们将深入探讨Java中的继承和多态性。 ### 继承(Inheritance) 在Java中,继承允许一个类(子类)...
通过上述机制,我们可以构建出层次分明、高度灵活的类结构,每个类都有明确的职责和行为,同时也支持统一的接口和多态行为,大大增强了代码的可读性、可维护性和可扩展性。 总之,虚方法和抽象类是实现运行时多态的...
这种继承关系使得代码重用变得简单,减少了冗余,也增强了代码的层次结构。 **多态**是指同一操作可以应用于不同的对象,产生不同的效果。在Java中,多态主要有两种形式:编译时多态和运行时多态。编译时多态主要...
下面是一个简单的例子来展示如何在Java中使用继承和多态: ```java // 定义一个基类 Person public class Person { private String name; private int age; public Person(String name, int age) { this.name ...
为了更好地理解Java多态的应用,下面通过一个简单的示例来说明。 **示例**:假设有一个`Animal`类作为基类,它有一个`makeSound()`方法。我们可以创建两个子类`Dog`和`Cat`,分别重写`makeSound()`方法。 ```java ...
- **代码复用**:通过多态机制,可以利用基类或接口声明变量,并通过这些变量调用实际子类的方法,从而实现对多个不同子类的行为进行统一处理。 - **可扩展性**:当系统需要增加新的子类时,无需修改原有代码即可...
### 多态的力量:在C#中实现灵活的代码设计 **一、多态的基本概念** 多态性作为面向对象编程(OOP)的核心特性之一,与其他三个特性——封装、继承和抽象并列,共同构成了面向对象编程的基础。在C#中,多态指的是...
`single-inherit`可能是一个源代码文件或者是一个编译后的二进制文件,用于演示如何在C语言中实现单继承的多态特性。 通过这种方式,虽然C语言不具备原生的多态和继承机制,但我们依然可以通过自定义的数据结构和...