java_this()super()

public class a03 {

 public static void main(String[] args) {

 } } class Cat{

 public Cat(Object obj) {  // super();  } } class cat01 extends Cat{

 public cat01(Object obj) {   super(obj);  /*记住一点:在构造子类时,一定会调用到父类的构造方法。因为父类中的元素也需要被初始化。  所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。  如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的无参构造  */   } }

package IO; /*  * 装饰设计模式 模拟咖啡 1.抽象组件:需要装饰的抽象对象(接口或抽象父类) 2.具体组件:需要装饰的对象 3.抽像装饰类:包含了对抽象组件的引用以及装饰着共有的方法 4,具体装饰类:被装饰的对象  */ public class test2 {  public static void main(String[] args) {   Drink coffee=new Coffee();   System.out.println(coffee.info()+"--->"+coffee.cost());   Drink suger=new Suger(coffee);//装饰   System.out.println(suger.info()+"--->"+suger.cost());   Drink milk=new milk(coffee);   System.out.println(milk.info()+"--->"+milk.cost());   milk=new milk(suger);   System.out.println(milk.info()+"--->"+milk.cost());  } } //抽象组件 interface Drink{  double cost();//费用  String info();//说明 } //具体组件 class Coffee implements Drink{  private String name="原味咖啡";  @Override  public double cost() {   return 10;  }  @Override  public String info() {   return name;  } } //抽象装饰类 abstract class Decorate implements Drink{  //对抽象组件的引用  private Drink drink;   public Decorate(Drink drink){    this.drink=drink;  }  @Override  public double cost() {   return this.drink.cost();  }  @Override  public String info() {   return this.drink.info();  } } //具体的装饰类 class milk extends Decorate{     public milk(Drink drink) {   super(drink);//super(参数):调用基类中的某一个构造函数  }  @Override  public double cost() {   return super.cost()*4;  }  @Override  public String info() {   return super.info()+"加入了牛奶";  }   } //具体的装饰类 class Suger extends Decorate{

 public Suger(Drink drink) {   super(drink);  }  @Override  public double cost() {   return super.cost()*2;  }  @Override  public String info() {   return super.info()+"加入了蔗糖";  }   }

package IO;
/*
 * 装饰设计模式
 实现放大器的功能
 */
public class test {
 public static void main(String[] args) {
 Person p=new Person();
 p.say();
 
 //装饰
 Amplifier am=new Amplifier(p);
   am.say();
 }
}
interface Say{
 void say();
}
class Person implements Say{
 private int voice=10;
 public int getVoice() {
  return voice;
 }
 public void setVoice(int voice) {
  this.voice = voice;
 }
 @Override
 public void say() {
 System.out.println("人的声音为"+this.getVoice());
 }
}
class Amplifier implements Say{
 private Person p;
 Amplifier(Person p) {
  this.p=p;
 }
 @Override
 public void say() {
  System.out.println("人的声音为"+this.p.getVoice()*100);
        System.out.println("zaoyin..........");
 }
 
}

猜你喜欢

转载自www.cnblogs.com/wcss/p/11029688.html
今日推荐