Java基礎

【1、對象轉型casting】
 (1)一個基類的引用類型變量可以“指向”其子類的對象。
 (2)一個基類的引用不可以訪問其子類對象新增加的成員(屬性和方法)。
 (3)可以使用引用變量"instanceof 類名"來判斷該引用型變量所“指向”的對象是否屬於該類或該類的子類。
 (4)子類的對象可以當作基類的對象來使用稱作向上轉型(upcasting),反之稱爲向下轉型(dwoncasting)。
 class Animal {
  public String name;
  Animal(String name) {
   this.name = name;
  }
 }
 
 class Cat extends Animal {
  public String eyesColor;
  Cat(String name, String eyesColor) {
   super(name);
   this.eyesColor = eyesColor;
  }
 }
 
 class Dog extends Animal {
   public String furColor;
   Dog(String name, Strung furColor) {
    super(name);
    this.furColor = furColor;
   }
 }
 
 public class Test {
  public static void main(String[] args) {
   Animals animal = new Animal("name");
   Cat cat = new Cat("catName", "blue");
   Dog dog = new Dog("dogName", "black");
   
   System.out.println(animal instanceof Animals);  // (3)
   System.out.println(cat instanceof Animals);   // (3)
   System.out.println(dog instanceof Animals);   // (3)
   System.out.println(animal instanceof Cat);   // (3)
   
   animal = new Dog("bigYellow", "yellow");   // (1)
   System.out.println(animal.name);
   System.out.println(animal.furColor);    // (2)
   System.out.println(animal instanceof Animal);
   System.out.println(animal instanceof Dog);
   
   Dog dog1 = (Dog)a;    // 強制類型轉換
   System.out.println(dog1.furColor);
  }
 }

【2、動態綁定和多態】
 動態綁定是指“在執行期間(javac)(而非編譯期java)”判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法。
 (1)要有繼承
 (2)要有重寫
 (3)父類引用要指向子類對象。
 例子:根據Lady對象的成員變量pet所引用的不同的實際類型而調用相應的enjoy方法。
 class Animal {
  //
  public Animal(String name) {
   this.name = name;
  }
  
  //
  public void sound() {
   System.out.println("動物叫了……");
  }
  //
  private String name;  
 }
 
 class Cat extends Animal {
 
  //
  public Cat(String name, String eyeColor) {
   super(name);
   this.eyeColor = eyeColor;
  }
  
  //
  public void sound() {
   System.out.println("貓叫了……");
  } 
  //
  private String eyeColor;  
 }
 
 class Dog extends Animal {
  //
  public Dog(String name, String furName) {
   super(name);
   this.funName = furName;
  }
  
  //
  public void sound() {
   System.out.println("狗叫了……");
  }
  //
  private String furColor;
 }
 
 class Lady {
  public Lady(String name, Animal pet) {
   this.name = name;
   this.pet = pet;
  }
  //
  public void myPetSound() {
   pet.sound();
  }
  //
  private String name;
  private Animal pet;
 }
 
 public class Test {
  public static void main(String[] args) {
   Cat cat = new Cat("catName, "blue");
   Dog dog = new Dog("dogName", "black");
   
   Lazy lazy1 = new Lazy("lazy1", cat);
   Lazy lazy2 = new Lazy("lazy2", dog);
   
   lazy1.myPetSound();
   lazy2.myPetSound();
  }
 }
【3、抽象類】
 用abstract關鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法。
 含有抽象方法的類必須被聲明爲抽象類,抽象類必須被重寫。
 抽象類不能被實例化。
 抽象方法只需聲明,而不需實現。
 
【4、Final關鍵字】
 final的變量的值不能夠被改變
  final的成員變量
  final的局部變量(形參)
 final的方法不能夠被重寫
 final的類不能夠被繼承
 【實例】
 public class TestFinal {
  public static void main(String[] args) {
   
  }
 }

發佈了9 篇原創文章 · 獲贊 1 · 訪問量 1354
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章