码迷,mamicode.com
首页 > 编程语言 > 详细

java面向对象编程(七)--四大特征之多态

时间:2014-08-18 23:21:33      阅读:367      评论:0      收藏:0      [点我收藏+]

标签: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

java面向对象编程(七)--四大特征之多态

标签:style   blog   color   java   使用   ar   div   log   

原文地址:http://www.cnblogs.com/Davis812/p/3920577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!