标签:style blog color java 使用 ar div log
1、多态概念
多态性是对象多种表现形式的体现。比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性。
java中的多态,就是指一个引用(类型)在不同情况下的多种状态。也可以理解成,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。也可以理解为“一个接口,多个方法”。
实现多态有两种方式:1、继承;2、接口
案例一:
多态演示[Dome122.java] //演示继承、方法覆盖、多态 public class Demo122 { public static void main(String[] args) { //非多态,创建对象,然后调用其方法 Cat cat=new Cat(); cat.cry(); Dog dog=new Dog(); dog.cry(); //多态机制,可通过父类创建的对象调用子类的方法,即所谓的一个接口,多个方法 Animal an=new Cat(); an.cry();//显示猫猫叫 an=new Dog(); an.cry();//显示汪汪叫 } } //动物类 class Animal{ String name; int age; //让外部的方法访问类内部(私有)的属性,需要将类内部的属性添加get和set方法
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; } //动物会叫 public void cry(){ System.out.println("不知道怎么叫"); } } //创建Dog子类并继承Animal父类及覆盖cry方法 class Dog extends Animal{ //狗叫 public void cry(){ System.out.println("汪汪叫"); } } class Cat extends Animal{ //猫叫 public void cry(){ System.out.println("猫猫叫"); } }
案例二:
/*
多重多态演示[Dome123.java] */
//演示子类继承父类、方法覆盖、多态方法 public class Demo123 { public static void main(String[] args) { //非多态演示 System.out.println("非多态演示:"); Cat cat=new Cat(); cat.cry(); Dog dog=new Dog(); dog.cry(); System.out.println(); //多态演示 System.out.println("多态演示:"); Animal an=new Cat(); an.cry(); an=new Dog(); an.cry(); System.out.println(); //多重多态演示 System.out.println("多重多态演示:"); Master master=new Master(); master.feed(new Dog(),new Bone()); master.feed(new Cat(),new Fish()); } } //主人类 class Master{ //给动物喂食物,使用多态,只要写一个方法 public void feed(Animal an,Food f){ an.eat(); f.showName(); } } //食物父类 class Food{ String name; public void showName(){ System.out.println("食物"); } } //食物鱼子类 class Fish extends Food{ public void showName(){ System.out.println("鱼"); } } //食物骨头子类 class Bone extends Food{ public void showName(){ System.out.println("骨头"); } } //动物类Animal父类 class Animal{ String name; int age; 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; } //动物会叫 public void cry(){ System.out.println("不知道怎么叫"); } //动物吃东西 public void eat(){ System.out.println("不知道吃什么"); } } //创建Dog子类并extends继承Animal父类及覆盖cry方法 class Dog extends Animal{ //狗叫 public void cry(){ System.out.println("汪汪叫"); } //狗吃东西 public void eat(){ System.out.println("狗爱吃骨头"); } } class Cat extends Animal{ //猫自己叫 public void cry(){ System.out.println("猫猫叫"); } //猫吃东西 public void eat(){ System.out.println("猫爱吃鱼"); } }
多态--注意事项:
1、java允许父类的引用变量引用它的子类的实例(对象)
Animal an=new Cat();//这种转换时自动完成的
java面向对象编程(七)--四大特征之多态,布布扣,bubuko.com
标签:style blog color java 使用 ar div log
原文地址:http://www.cnblogs.com/Davis812/p/3920577.html