一阶段-EighthWork-1-字符流+缓冲流

/*
定义一个宠物类(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()
{ }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值