/* 
定义一个宠物类(Pet),它有两个方法:叫cry(),吃东西eat(),定义宠物的子类狗(Dog),猫(Cat),覆盖父类的cry(),eat()方法, 
 里面写System.out.println("猫吃了鱼")这样的打印语句,另外狗有自己的方法看门guardEntrance(),猫自己独有的方法捉老鼠huntMice() 
定义一个Test类,在main中定义两个Pet变量,pet1,pet2,采用引用转型实例化Dog,Cat,分别调用Pet的cry(),eat(); 
 * (2)将Pet引强制转换为具体的Dog,Cat,在调Dog的guardEntrance(),Cat的huntMice()(提示:先用instanceof进行类型判断) 
 * (3)(思考)修改Test类,添加喂养宠物feedPet(Pet pet)的方法,在feedPet中调cry(),eat()方法,实例化Test类,再实例化狗 Dog dog = new Dog(), 
 猫 Pet cat = new Cat(), Test分别调feedPet()方法分别传参数cat,dog,思考这两种方式的异同,深入理解引入转型和多态 
 */ 
package EighthWork;
 /** 
 * 
 * @author Administrator 
 */ 
public abstract class PetTest 
{ 
     //这里体现的是多态的实现机制,通过传入参数的对象不同来实现多态 
    public void feedPet(Pet pet) 
    { 
        System.out.print("n"); 
        pet.cry(); 
        pet.eat(); 
    } 
    public static void main(String[] args) 
    { 
        //采用转型实例化Dog和Cat 
        //属性和方法的调用是不同的,属性跟着父类引用的类型一致,方法与实例的引用一致 
        //也就是属性是在编译时就由父类决定 ,方法在由运行时决定 
        Pet pet1 = new Dog(); 
        pet1.cry(); 
        pet1.eat(); 
        pet1 = new Cat();//实现动态多态的要求:继承、实例名字相同、 
        pet1.cry(); 
        pet1.eat(); 
      //将Pet强制转换为具体的Dog和Cat 
//        Pet pet1 = new Dog(); 
//        Pet pet2 = new Cat(); 
//        if(pet1 instanceof Dog) 
//        { 
//            Dog dog = (Dog)pet1; 
//            dog.guardEntrance(); 
//        } 
//        if(pet2 instanceof Cat) 
//        { 
//            Cat cat = (Cat)pet2; 
//            cat.huntMice(); 
//        } 
        //通过传递对象参数的引用实现多态 
//        PetTest petTest = new PetTest(); 
//        Dog dog = new Dog(); 
//        Pet cat = new Cat(); 
//        petTest.feedPet(dog); 
//        petTest.feedPet(cat); 
    } 
 } 
============================================ 
/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package EighthWork;
 /** 
 * 
 * @author Administrator 
 */ 
public abstract class Pet 
{ 
    public void cry()   //抽象类中也允许有非抽象方法 
    { 
        System.out.print("宠物在叫"); 
    } 
    public void eat() 
    { 
        System.out.print("宠物在吃"); 
    } 
//抽象类都是应用于继承,子类应该重写抽象类中所有的抽象方法 
    public abstract void PetEat(); 
 } 
======================================== 
/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package EighthWork;
 /** 
 * 
 * @author Administrator 
 */ 
public class Dog extends Pet 
{ 
    public Dog() 
    { 
        System.out.println("养了一只狗"); 
    } 
    public void cry() 
    { 
        System.out.println("狗的叫声:汪汪..."); 
    } 
    public void eat() 
    { 
        System.out.println("狗啃了一根骨头"); 
    } 
    public void guardEntrance() 
    { 
        System.out.println("宠物狗在看门"); 
    } 
    public void PetEat() 
    { 
     } 
} 
======================================= 
/* 
 * To change this template, choose Tools | Templates 
 * and open the template in the editor. 
 */ 
package EighthWork;
 /** 
 * 
 * @author Administrator 
 */ 
public class Cat extends Pet 
{ 
    public Cat() 
    { 
        System.out.println("养了一只猫"); 
    } 
    public void cry() 
    { 
        System.out.println("猫在叫:喵喵..."); 
    } 
    public void eat() 
    { 
        System.out.println("猫吃了一条鱼"); 
    } 
    public void huntMice() 
    { 
        System.out.println("宠物猫抓了一只老鼠"); 
    } 
    public void PetEat() 
    {    } 
} 
相关知识
美国倍酷奶粉为什么可以做到零天替代母乳【领养宠物吧】
学宠物训犬师培训课程内容有哪些
ZL-013B小动物实验跑步机/大鼠实验跑台/小鼠平板跑步机
《幻唐志》黄眉大仙BOSS挑战思路与攻略汇总:《幻唐志》官网新闻资讯中心
宠喵club商城
宠物培养指南 千万不要错过这些宠物
武汉派多格宠物学校
8个方面,教你如何完美照顾刚做完绝育手术的猫主子!
一模分数=高考成绩?如何正确对待高三一模,稍不注意高考吃大亏
许昌宠物美容技术学习,训犬师培训
网址: 一阶段 https://m.mcbbbk.com/newsview299826.html
| 上一篇: 申兴海 | 下一篇: 虚拟宠物猫(java) |