0、目录
1、UML 图 —— 类之间的关系
UML-Unified Module Language
统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系
2、解释UML-类图
3、解释UML-接口图
4、解释UML-继承关系
带箭头的实线,表示 Spider,Cat, Fish都继承于Animal这个父类.
特别注意: 模糊部分表示:此时不需要关注模糊的那部分内容。 请不要再发图片是模糊的纠正信息了,站长特意这么做的。。。
5、解释UML-实现关系
表示 Fish实现了 Pet这个接口
6、练习一:Animal类
- 创建Animal类,它是所有动物的抽象父类。
- 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
- 定义一个受保护的构造器,用来初始化legs属性。
- 声明抽象方法eat。
- 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。
package charactor;
public abstract class Animal {
protected int legs;
protected Animal(int legs){
this.legs = legs;
}
public abstract void eat();
public void walk(){
System.out.println(this.legs + "行走");
}
}
7、练习二:Spider类
- Spider继承Animal类。
- 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
- 实现eat方法
package charactor;
public abstract class Spider extends Animal{
public Spider(int legs){ // 定义构造方法 Spider
super(8); //调用父类的构造方法
}
public void eat(){
System.out.println("吃蜘蛛");
}
}
8、练习三:接口
根据UML类创建pet(宠物)接口
- 提供getName() 返回该宠物的名字
- 提供setName(String name) 为该宠物命名
- 提供 play()方法
package charactor;
public interface Pet {
public void getName();
public void setName(String name);
public void play();
}
9、练习四:Cat类
- 该类必须包含String属性来存宠物的名字。
- 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。
- 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
- 实现Pet接口方法。
- 实现eat方法。
package charactor;
public class Cat extends Animal implements Pet{
String name;
public Cat(String name){
this.name = name;
super(4);
}
public Cat(){
this(null);
}
public void getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void play(){
System.out.println(this.name + "在玩耍");
}
public void eat(){
System.out.println(this.name + "吃鱼");
}
}
10、练习五:fish类
- 创建Fish类,它继承Animal类
- 重写Animal的walk方法以表明鱼不能走且没有腿。
- 实现Pet接口
- 无参构造方法
- 提供一个private 的name属性
package charactor;
public class Fish extends Animal implements Pet{
private String name;
@Override
public void walk(){
System.out.println("鱼不能走且没有腿");
}
public void getName(){
return this.name;
}
public void setName(String name){
this.name = name;
System.out.println(this.name +"名称");
}
public void play(){
System.out.println(this.name + "玩耍");
}
public Fish(){}
@Override
public void eat(){
System.out.println("鱼要吃东西");
}
}
11、练习的另外一种参考答案
******************************************************Animal********************************************************************************
package extendTest;
public class Cat extends Animal implements Pet{
private static String name;
public Cat(String name, int legs) {
super(legs);
this.name = name;
}
public Cat(){
this(name,legs);
}
public void eat() {
System.out.println("猫吃鱼");
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void play(){
System.out.println("玩球");
}
public static void main(String []args){
Cat c = new Cat();
c.setName("mimi");
c.legs = 4;
c.walk();
System.out.printf(c.getName());
c.play();
}
}
**************************************************************Spider************************************************************************
package extendTest;
public class Spider extends Animal{
public Spider(int legs){
super(legs);
}
public void eat(){
System.out.println("我不知道蜘蛛怎么吃饭。。");
}
public static void main(String[] args){
Spider s = new Spider(8);
s.walk();
}
}
**************************************************************Pet************************************************************************
package extendTest;
public interface Pet {
public String getName();
public void setName(String name);
public void play();
}
**************************************************************Cat************************************************************************
package extendTest;
public class Cat extends Animal implements Pet{
private static String name;
public Cat(String name, int legs) {
super(legs);
this.name = name;
}
public Cat(){
this(name,legs);
}
public void eat() {
System.out.println("猫吃鱼");
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void play(){
System.out.println("玩球");
}
public static void main(String []args){
Cat c = new Cat();
c.setName("mimi");
c.legs = 4;
c.walk();
System.out.printf(c.getName());
c.play();
}
}
**************************************************************Fish************************************************************************
package extendTest;
public class Fish extends Animal implements Pet{
private String name;
static int weiba;
public Fish(int legs,int weiba){
super(legs);
this.weiba = weiba;
}
public Fish(){
this(legs,weiba);
}
public void walk(){
System.out.println(name + "没有脚,用尾巴游");
}
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println(name + "吃虾米");
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public void play(){
System.out.println("玩海草");
}
public static void main(String [] args){
Fish fish = new Fish();
fish.setName("咕噜噜");
fish.walk();
fish.eat();
System.out.printf(fish.getName());
fish.play();
}
}