文章目录
UML类图
目录结构
我们从指向最多的开始写
Humburger.java
java
package zsms;
public abstract class Humburger {
protected String name;
public String getName(){//因为没abstract,所以猜是具体方法
return name;
}
public abstract double getPrice();//因为是抽象方法 ,所以什么都不用写
}
ChickenBurger.java
java
package zsms;
public class ChickenBurger extends Humburger {
public ChickenBurger(){//继承了我们就初始化
name = "鸡腿堡";
}
//继承了我们还要重写方法
@Override
public double getPrice(){ //给一个价格
return 10;
}
}
Condiment.java
java
package zsms;
/*
* 配料 佐料
*
*/
public abstract class Condiment extends Humburger {
protected Humburger humburger;
public abstract String getName();//抽象类啥也不写
}
Chuilli.java
java
package zsms;
/*
* chilli 辣椒,辣酱
*
*/
public class Chilli extends Condiment {
Humburger humburger;
//再来一遍!!构造方法是初始化
//有this,你的这个类里就得有 这个东西 Humburger humburger
public Chilli(Humburger humburger){
this.humburger = humburger;
}
@Override
public String getName(){//认真理解, 你返回的是什么的名字?
//是不是加了辣椒的汉堡?
return humburger.getName()+"加辣椒";
}
@Override
public double getPrice(){
//返回的是谁的价格?
//是不是带有辣椒的汉堡?
//辣椒是免费的,所以直接返回 汉堡的价格
return humburger.getPrice();
}
}
Lettuce.java
java
package zsms;
/*
* 生菜
*/
public class Lettuce extends Condiment {
Humburger humburger;
//构造方法 初始化 就是this
public Lettuce(Humburger humburger){
this.humburger = humburger;
}
@Override
public String getName(){
/*
* get谁的名字?
* 加了生菜的汉堡的名字
*/
return humburger.getName()+"加生菜";
}
@Override
public double getPrice(){
/*
* get谁的price?
* 加了生菜的汉堡的价格
* 生菜一块钱
*/
return humburger.getPrice()+1;
}
}
Test.java
深度理解test怎么写
java
package zsms;
public class Test {
public static void main(String[] args) {
//weisha
//h什么也没有加
Humburger h = new ChickenBurger();
System.out.println(h.getName() + h.getPrice());
//h1加生菜
Humburger h1 = new Lettuce(h);
System.out.println(h1.getName() + h1.getPrice());
//h2加双倍生菜
Humburger h2 = new Lettuce(h1);
System.out.println(h2.getName() + h2.getPrice());
//h3加辣椒
Humburger h3 = new Chilli(h);
System.out.println(h3.getName() + h3.getPrice());
//h4都加
Humburger h4 = new Chilli(h1);
System.out.println(h4.getName() + h4.getPrice());
}
}