java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...
做一個(gè)飼養(yǎng)員給動(dòng)物喂食物的例子體現(xiàn)JAVA中的面向?qū)ο笏枷?接口(抽象類)的用處
interface Animal{
//動(dòng)物的接口??? public void eat(Food food);
//接口中只有抽象的方法和靜態(tài)常量!這里void前面省略了abstract。同樣,變量可以省略static final}
class Cat implements Animal
//一種動(dòng)物類:貓
{
public void eat(Food food)
//這里是對(duì)上面的接口中已經(jīng)有的方法進(jìn)行了覆蓋也叫重寫,這一步是必須的!??? {
System.out.println("小貓吃"+food.getName());
}
}
class Dog implements Animal
//一種動(dòng)物類:狗{
public void eat(Food food)
//覆蓋??? {
System.out.println("小狗啃"+food.getName());
}
}
abstract class Food
//食物抽象類 。抽象類不能創(chuàng)建對(duì)象,這和C++一樣
{
protected String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Fish extends Food
//一種食物類:魚,繼承了Food類
{
public Fish(String name) {
//構(gòu)造函數(shù)????? this.name = name;
}
}
class Bone extends Food
//一種食物類:骨頭,繼承了Food類{
public Bone(String name) {
//構(gòu)造函數(shù)
this.name = name;
}
}
class Feeder
//飼養(yǎng)員類 ,這是個(gè)很一般的類。。。
{
public void feed(Animal animal,Food food)
//飼養(yǎng)員給某種動(dòng)物喂某種食物??? {
animal.eat(food);
}
}
public class TestFeeder
//測(cè)試飼養(yǎng)員給動(dòng)物喂食物
{
public static void main(String[] args) {
//這里順便說下,只有在public類中才有main函數(shù)!一個(gè)這樣的程序中也只有一個(gè)public類!????? Feeder feeder=new Feeder();
Animal animal=new Dog();
//animal引用Dog類對(duì)象????? Food food=new Bone("肉骨頭");
//這里創(chuàng)建父類引用子類對(duì)象,用food引用Bone對(duì)象
feeder.feed(animal,food);
//給狗喂肉骨頭
animal=new Cat();
//這里又將animal引用Cat類的對(duì)象????? food=new Fish("魚");
//同樣,用food引用Fish類對(duì)象,這和上面一樣,充分體現(xiàn)了food和 animal只是兩個(gè)方便引用的名稱,是通過這兩個(gè)名稱來引用對(duì)象的????? feeder.feed(animal,food);
//給貓喂魚
}
}
/*接口和繼承有什么相似和不同,我只是模糊的了解一些,卻說不太出來,也希望老師在講解這部分的時(shí)候能詳細(xì)些。至于java中的繼承和C++的繼承一比較,會(huì)發(fā)現(xiàn)JAVA只
支持單繼承,即只能繼承一個(gè)父類,而c++卻能繼承多個(gè)父類!但通過接口,java可以實(shí)現(xiàn)多個(gè)接口,接口也可以繼承接口。
ps:將上面的題目接口的部分改成繼承也是可以的,很容易。。。如下abstract class Animal{
public abstract void eat(Food food);
}
class Cat extends Animal
{
public void eat(Food food)
{
System.out.println("小貓吃"+food.getName());
}
}
class Dog extends Animal? {? ??? public void eat(Food food)? ??? {? ????? System.out.println("小狗啃"+food.getName());? ??? }? }
總結(jié)
以上是生活随笔為你收集整理的java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2D游戏知识点二、Unity 2D游戏主
- 下一篇: CIO看待ERP