Java编程思想读书笔记第七章:复用类

2018-08-13  本文已影响10人  刺雒

组合语法

继承

class Homer {
  char doh(char c) {
    print("doh(char)");
    return 'd';
  }
  float doh(float f) {
    print("doh(float)");
    return 1.0f;
  }
}

class Bart extends Homer {
  float doh(Milhouse m) {
    print("doh(Milhouse)");
    return 1.0f;
  }
}
class Instrument {
  public void play() {}
  static void tune(Instrument i) {
    i.play();
  }
}

public class Wind extends Instrument {
  public static void main(String[] args) {
    Wind flute = new Wind();
    Instrument.tune(flute); // Upcasting
  }
}

代理

public interface SpaceShipControls {
  void up(int velocity);
}

public class SpaceShip implements SpaceShipControls  {
    void up(int velocity) {
    }
}

public class SpaceShipDelegation {
    private SpaceShipControls controls =
      new SpaceShip();

  public void up(int velocity) {
    // do others
    controls.up(velocity);
    // do others
  }
}

final关键字

final可以修饰数据、方法和类

final数据
public class FinalData {
  private final int valueOne = 10;
  private final Value v1 = new Value(22);

  // 报错Can't change reference
  v1 = new Value(23)
  v1.i++;
}

class Value {
  int i; 
  public Value(int i) { this.i = i; }
}
public class FinalData {
   public final int i4 = rand.nextInt(20);
   public static final int INT_5 = rand.nextInt(20);

    publlic final Value v1 = new Value();
    public static Value V2 = new Value();
}

FinalData fd1 = new FinalData();
FinalData fd2 = new FinalData();

println(fd1.i4 + "-" + fd1.INT_5);// output 15-19   
println(fd2.i4 + "-" +  fd2.INT_5);// output 13-19

println(fd1.v1 + "-" + fd1.V2); // output reusing.Value@677327b6   - reusing.Value@14ae5a5
println(fd2.v1 + "-" + fd2.V2); // output reusing.Value@7f31245   - reusing.Value@14ae5a5

final方法
final 类
上一篇 下一篇

猜你喜欢

热点阅读