`
Javaloverlover
  • 浏览: 347749 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

简单多态代码

    博客分类:
  • java
阅读更多
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#多态小案例代码分享~

    在这个"多态"案例中,我们可以期待看到如何在实际的代码场景中应用多态概念。 首先,我们需要理解多态的基本概念。在C#中,多态主要体现在方法的重载(Overloading)和方法的重写(Overriding)上。方法的重载是指...

    java 接口 类 继承 多态的简单实例

    在本实例中,我们将探讨这些关键概念,并通过具体代码示例来展示它们的实际应用。 首先,**接口(Interface)**是Java中的一个重要概念,它是一种完全抽象的类,只能包含常量定义和抽象方法。接口用于定义对象间的...

    java 多态实例

    在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之一,另外两个是封装和继承。...这样的设计提高了代码的可复用性和可扩展性,使得新数据类型或排序算法的添加变得简单,符合面向对象编程的原则。

    Java 多态应用,掌握多态

    理解并熟练运用多态,能够极大地提升程序设计的效率和代码的可读性。 首先,我们来详细解释一下多态的概念。多态分为编译时多态和运行时多态。编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中...

    关于继承和多态的简单练习

    现在,让我们回到“关于继承和多态的简单练习”这个主题。在这个练习中,你可能创建了一些类,定义了它们之间的继承关系,并实现了多态的效果。例如,你可能创建了一个`Vehicle`类,然后有`Car`和`Bike`继承自`...

    多态简单工厂

    总的来说,多态简单工厂是C#编程中的重要知识点,理解和掌握它们能帮助开发者写出更加灵活、易于维护的代码。通过北大青鸟的C#.NET讲堂学习,我们可以深入理解这些概念,并通过实际操作提升编程技能。

    java 多态实例代码

    下面是一个简单的多态实例代码: ```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++继承与多态例子

    在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和方法,从而实现了代码的重用和扩展。多态则是指同一种行为在不同对象上表现...

    继承和多态.doc

    以下是一个简单的Java示例,展示了如何通过接口实现多态: ```java // 定义一个接口 public interface Parent { public void simpleCall(); } // 实现接口的子类之一 public class Child_A implements Parent { ...

    对于多态的理解

    多态的主要作用在于提高代码的灵活性和可维护性。通过多态,可以编写更加通用的代码,减少对具体实现的依赖,从而降低不同类型之间的耦合度。这有助于软件的扩展性和适应性,使得程序更容易应对变化。 ### String、...

    用多态做简单银行系统

    在这个“用多态做简单银行系统”的项目中,我们将深入理解如何运用多态性这一核心OOP概念来构建一个银行系统。多态性是面向对象编程中的一个重要特性,它允许我们使用一个通用接口来处理不同类型的对象,从而提高...

    java继承、多态的简单程序.zip

    这个压缩包"java继承、多态的简单程序.zip"显然包含了一些示例代码,旨在帮助初学者理解这两个概念。接下来,我们将深入探讨Java中的继承和多态性。 ### 继承(Inheritance) 在Java中,继承允许一个类(子类)...

    实现多态:虚方法

    通过上述机制,我们可以构建出层次分明、高度灵活的类结构,每个类都有明确的职责和行为,同时也支持统一的接口和多态行为,大大增强了代码的可读性、可维护性和可扩展性。 总之,虚方法和抽象类是实现运行时多态的...

    jave 继承、封装、多态

    这种继承关系使得代码重用变得简单,减少了冗余,也增强了代码的层次结构。 **多态**是指同一操作可以应用于不同的对象,产生不同的效果。在Java中,多态主要有两种形式:编译时多态和运行时多态。编译时多态主要...

    java继承与多态

    下面是一个简单的例子来展示如何在Java中使用继承和多态: ```java // 定义一个基类 Person public class Person { private String name; private int age; public Person(String name, int age) { this.name ...

    java多态机制

    为了更好地理解Java多态的应用,下面通过一个简单的示例来说明。 **示例**:假设有一个`Animal`类作为基类,它有一个`makeSound()`方法。我们可以创建两个子类`Dog`和`Cat`,分别重写`makeSound()`方法。 ```java ...

    java 笔记, 讲解多态 面向对象

    - **代码复用**:通过多态机制,可以利用基类或接口声明变量,并通过这些变量调用实际子类的方法,从而实现对多个不同子类的行为进行统一处理。 - **可扩展性**:当系统需要增加新的子类时,无需修改原有代码即可...

    多态的力量:在C#中实现灵活的代码设计

    ### 多态的力量:在C#中实现灵活的代码设计 **一、多态的基本概念** 多态性作为面向对象编程(OOP)的核心特性之一,与其他三个特性——封装、继承和抽象并列,共同构成了面向对象编程的基础。在C#中,多态指的是...

    C语言:多态(单继承实现)

    `single-inherit`可能是一个源代码文件或者是一个编译后的二进制文件,用于演示如何在C语言中实现单继承的多态特性。 通过这种方式,虽然C语言不具备原生的多态和继承机制,但我们依然可以通过自定义的数据结构和...

Global site tag (gtag.js) - Google Analytics