第四次实验 第一期 紫金学院 Java 抽象类和接口

  1. 建立一个动物的层次结构,以抽象类Animal为根,Cat、Spider和Fish动物类实现接口Pet。使用接口和抽象类技术完成。类结构如图1所示。

图1 类结构

完成:

  • 创建Animal类,它是所有动物类的抽象父类。
  • 创建Spider类,继承Animal类。
  • 创建Pet接口。
  • 创建Cat类,继承Animal类并实现Pet接口。
  • 创建Fish类,继承Animal类并实现Pet接口。
  • 使用AnimalsTest类测试代码。

  1.  Animal类

        (1)所有动物类的父类

        (2)抽象类

        (3)两个方法:walk()和eat(),输出内容随便给

        (4)成员变量legs

abstract class Animal {
	public int legs;
	public Animal (int legs) {
		this.legs=legs;
		}
	public void walk () {
		System.out .println ("Animal is walking on legs!") ;
		}
	public abstract void eat();
}

 2.Cat类

        (1)创建cat类,继承父类Animal,接口Pet

        (2)成员变量name,对他进行获取get,修改set

        (3)两个方法:paly()和eat()

        (4)引用父类变量 super(legs)

        (5)创建两个构造方法:含参、不含参

public class Cat extends Animal implements Pet{
	public Cat(int legs) {
		super(legs);
	}
	public void Cat() {
		
	}
	private String name;
	public void cat(String name) {
		this.name=name;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name ) {
		this.name=name;
	}
	public void play() {
		System.out.println("cat 正在  play!");
	}
	public void eat() {
		System.out.println("cat 正在  eat!");
	}

}

 3.Spider类

        (1)创建Spide类,继承父类Animal,接口Pet

        (2)成员变量name,对他进行获取get,修改set

        (3)两个方法:paly()和eat()

        (4)引用父类变量 super(legs)

        (5)创建两个构造方法:含参、不含参

public class Spider extends Animal implements Pet{
	private String name;

	public void Spider(String name) {
		this.name=name;
	}
	public Spider(int legs) {
		super(legs);
		// TODO Auto-generated constructor stub
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void play() {
		System.out.println("Spider 正在  play!");		
	}
	public void eat() {
		System.out.println("Spider 正在 eat!");
	}
}

 4.Fish类

        (1)创建Fish类,继承父类Animal,接口Pet

        (2)成员变量name,对他进行获取get,修改set

        (3)两个方法:paly()和eat()

        (4)引用父类变量 super(legs)

        (5)创建两个构造方法:含参、不含参

public class Fish extends Animal implements Pet{
	private String name;
	public void Fish(String name) {
		this.name=name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public Fish(int legs) {
		super(legs);
		// TODO Auto-generated constructor stub
	}
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("Fish 正在 eat!");
	}
	public void walk() {
		System.out.println("Fish 正在 walking!");
	}
}

  5.Pet接口

        (1)创建Pet(宠物)接口

        (2)两个方法:paly()、getName()、含参setName()

public interface Pet {
	void setName(String name);
	String getName();
	static void play() {
		System.out.println(" is playing! ");
	}
}

  6.Animal类

        (1)父类对象创建对象,用Spider类生成新的对象赋给a(父类对象),付给legs默认值8

        (2)a.walk()这个方法其实调用的是父类的walk的方法

        (3)而父类的eat()的方法是空的,所以调用自己

        (4)Pet p;创建对象,用Fish类生成新的对象赋给p,付给legs默认值9

        (5)给p的名字进行修改用到Pet类里的setName的方法,p.setName("小鱼");

public class AnimalTest {
	public static void main(String[] args) {
		Animal a;
		a=new Spider(8);
		a.walk();
		a.eat();
		//
		a=new Cat(4);
		a.walk();
		a.eat();
		//
		Pet p;
		p=new Fish(9);
		p.setName("小鱼");
		System.out.print(p.getName());
		Pet.play();
	}
}

 代码运行截图:

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵相机~

谢谢你,调试、讲解私聊我~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值