首页 > 代码库 > java面向对象编程(七)--四大特征之多态
java面向对象编程(七)--四大特征之多态
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();//这种转换时自动完成的
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。