接口和抽象类,接口和抽象类的区别
1 按如下要求编写Java程序
1.1 开发出一个Animal类(动物)要求如下:
1.1.1 该类为抽象类
1.1.2 定义一个私有的(private)、字符串类型的、实例属性name,表示动物的名称。
1.1.3 该类仅有一个公有的(public)构造方法,该构造方法有一个参数,参数为字符串类型该参数表示动物的名称,该构造方法的功能为将参数值赋值于属性name。
1.1.4 该类包含两个互为重载的方法:
1.1.4.1 public String getName(){//…} 功能为获得动物的名称;
1.1.4.2 public String getName(String prefix){ //…} 功能为获得前面加上前缀的的动物名称。
1.1.5 定义一个公有的抽象方法,其功能为吃东西:public abstract void eat();
1.2 开发一个Flyer接口(飞行者),要求如下:
1.2.1 定义一个飞行方法:void fly();
1.3 开发一个Swimer接口(游泳者),要求如下:
1.3.1 定义一个游泳方法:void swim();
1.4 开发一个FlyFish类(飞鱼)要求如下:
1.4.1 该类为非抽象类;
1.4.2 继承Animal类;
1.4.3 实现Flyer接口和Swimer接口;
1.4.4 定义一个公有的(public)无参构造方法,该构造方法通过调用父类的构造方法为父类属性name赋值“飞鱼”。
1.4.5 定义一个公有的实例方法,其功能为玩游戏:public void game(){//…}
1.5 开发一个测试类如下,进行测试。
public abstract class Animal {
private String name;
public Animal(String name){
this.name=name;
}
public Animal() {
}
public String getName(){
return name;
}
public String getName(String prefix){
return prefix+name;
}
public abstract void eat();
public void setName(String name) {
this.name = name;
}
}
public interface Flyer {
void fly();
}
public interface Swimer {
void swim();
}
ublic class FlyFish extends Animal implements Flyer,Swimer {
public FlyFish(){
super.setName("飞鱼");
}
@Override
public void eat() {
System.out.println("飞鱼吃");
}
@Override
public void fly() {
System.out.println("飞鱼飞");
}
@Override
public void swim() {
System.out.println("飞鱼游泳");
}
public void game(){
System.out.println("玩游戏");
}
}
public class Text {
public static void main(String[] args) {
System.out.println("----------测试飞鱼类------------");
FlyFish flyFish=new FlyFish();
System.out.println("飞鱼名称:"+flyFish.getName());
System.out.println("问候飞鱼:"+flyFish.getName("可爱的"));
flyFish.eat();
flyFish.fly();
flyFish.swim();
flyFish.game();
System.out.println("----------测试动物类------------");
Animal animal=flyFish;
System.out.println("动物名称:"+animal.getName());
System.out.println("问候动物:"+animal.getName("你好"));
animal.eat();
System.out.println("----------测试飞行者接口------------");
Flyer flyer=flyFish;
flyer.fly();
System.out.println("----------测试游泳者接口------------");
Swimer swimer=flyFish;
swimer.swim();
Flyer flyer1=new FlyerImpl();
flyer1.fly();
}
}