Java 多态
多态是面向对象的三大特性之一。
什么是多态?
对象在运行中的多种形态
多态大致可以分为两类:
(1)方法的重载与重写
(2)对象的多态性
例如:
//用父类的引用指向子类的对象(用大的类型去接受小的类型、向上转型、自动转换)
Human h = New Man();
多态性的小结:
(1)方法的重载和重写就是方法的多态性表现
(2)多个子类就是父类中的多种形态
(3)父类引用可以指向子类对象,自动转换
(4)子类对象指向父类对象需要强制转换
(5)在实际开发中尽量使父类引用(便于扩展)
public class TestDuotai { public static void main(String[] args) { //使用父类引用指向子类对象 Chicken hc = new HomeChicken(); hc.eat(); Chicken wc = new WildChicken(); wc.eat(); } //使用对象的多态,面向抽象编程(面向接口编程) public static void action(Chicken cc) { cc.eat(); if(cc instanceof PetChicken) {// instanceof,判断对象所属类别 PetChicken pc = (PetChicken) cc; //大的类型,转换成小的类型,强制转换 pc.dance(); } } } abstract class Chicken{ String name; int age; public Chicken() { } public Chicken(String name) { this.name = name; } public void eat() { System.out.println("想吃饭"); } } class HomeChicken extends Chicken{ public HomeChicken(){ } public void eat() { System.out.println("想吃小米"); } } class WildChicken extends Chicken{ public WildChicken(){ } public void eat() { System.out.println("想吃小虫子"); } } class PetChicken extends Chicken{ public PetChicken(){ } public void dance() { System.out.println("宠物鸡会唱跳、rap、篮球哦"); } }
本文来自博客园,作者:藤原豆腐渣渣,转载请注明原文链接:https://www.cnblogs.com/javafufeng/p/16274963.html