java 综合练习_java--综合练习

UML 图 —— 类之间的关系

UML-Unified Module Language

统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系

解释UML-类图

09c3ec8bc81e574837e518694c2971d6.png

解释UML-接口图

36af5ba8863506081cafdd1ae72cf86b.png

解释UML-继承关系

带箭头的实线,表示 Spider,Cat, Fish都继承于Animal这个父类.

解释UML-实现关系

表示 Fish实现了 Pet这个接口

1. 创建Animal类,它是所有动物的抽象父类。2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。3. 定义一个受保护的构造器,用来初始化legs属性。4. 声明抽象方法eat。5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。

package animal;

public abstract class animal {

protected int legs;

String name;

protected animal() {

System.out.println("创建一个无腿的动物");

}

protected animal(int legs) {

this.legs = legs;

System.out.println("创建了一个有" + legs+"的动物");

}

public abstract  void eat();

public void walk() {

System.out.println("该动物是用"+this.legs+"行走的");

}

public void what_is_playing(Pet A)

{

A.play();

}

}

1. Spider继承Animal类。2. 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。3. 实现eat方法

package Animals;

public class Spider extends Animal

{

/*构造函数*/

protected Spider()

{

super(8);

System.out.println("每个蜘蛛都是8条腿");

}

/*重写父类方法*/

@Override

public void eat()

{

System.out.println("蜘蛛正在吃东西");

}

}

根据UML类创建pet(宠物)接口1. 提供getName() 返回该宠物的名字2. 提供setName(String name) 为该宠物命名3. 提供 play()方法

package Animals;

public interface Pet

{

public String getName();

public void setName(String name);

public void play();

}

1. 该类必须包含String属性来存宠物的名字。2. 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。3. 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数4. 实现Pet接口方法。5. 实现eat方法。

package Animals;

public class Cat extends Animal implements Pet

{

private String name;

/*构造函数*/

public Cat()

{

this("");

System.out.println("该猫不起名字");

}

public Cat(String name)

{

super(4);

this.name = name;

}

/*重写父类和接口的方法*/

@Override

public String getName()

{

return this.name;

}

@Override

public void setName(String name)

{

System.out.println("You are to change your cat "+this.name+" to "+name);

this.name = name;

}

@Override

public void play()

{

System.out.println("Cat:"+this.name+" is playing with you");

}

@Override

public void eat()

{

System.out.println("Cat:"+this.name+" is eating");

}

}

1. 创建Fish类,它继承Animal类2. 重写Animal的walk方法以表明鱼不能走且没有腿。3. 实现Pet接口4. 无参构造方法5. 提供一个private 的name属性

package Animals;

public class Fish extends Animal implements Pet

{

private String name;

/*构造函数*/

public Fish()

{

;

}

/*改写父类和接口方法*/

@Override

public String getName()

{

return this.name;

}

@Override

public void setName(String name)

{

System.out.println("You are to change your fish "+this.name+" to "+name);

this.name = name;

}

@Override

public void play()

{

System.out.println("Fish:"+this.name+" is playing with you");

}

@Override

public void eat()

{

System.out.println("Fish:"+this.name+" is eating");

}

public void walk()

{

System.out.println("鱼没有腿,不能走路");

}

}

/*--------------------------test.java---------------------这是个测试样例哦*/

package Animals;

public class test

{   //测试Animal类

public static void main(String[] args)

{

/*测试蜘蛛*/

Spider S = new Spider();

S.eat();

S.walk();

System.out.println(S.legs);

/*测试猫*/

Cat T1 = new Cat();   //没名字

Cat T2 = new Cat("coffee");

//T2.name;   //私有成员无法访问

System.out.println(T1.getName());   //输出一行空白

System.out.println(T2.getName());

T1.setName("orange");   //修改没名字的猫

System.out.println(T1.getName());

T1.eat();

T2.play();

T1.walk();    //猫走路

/*测试鱼*/

Fish F = new Fish();

System.out.println(F.getName());

F.setName("gold");

System.out.println(F.getName());

F.play();

F.walk();

F.eat();

/*采用匿名类测试多态*/

Animal A =

new

Animal()

{

@Override

public

void

eat()

{

;

}

};

A.what_is_playing(F);

//调用fish的play

A.what_is_playing(T1);

//调用cat的play

//A.what_is_playing(S);   //没有集成pet接口的spider无法使用

}

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值