面向對象編程(二)

對象的轉型分 向上轉型 和 向下轉型(強制類型轉換)

向上轉型:父類的引用指向子類的對象,但是不能使用子類多出來的方法。

如:

 

 public class Test{

       public static void main(String args[]){

              Person p = new Person();

              p.playWithAnimal(new Dog());

              }

       }

      

class Animal{

       String furColor;

      

public void ecstasy(){

         System.out.println("------ecstasy-------");

         }

public void sleep(){

         System.out.println("------sleeping-----------");

         }

       }

      

class Dog extends Animal{

       String furColor;

       }

      

class Cat extends Animal{

       String furColor;

       }

      

class Person{

       public void playWithAnimal(Animal a){

              a.ecstasy();

              }

       }

 

 

向下轉型 如: 

Animal a = new Cat();
Cat c = (Cat)a;

 

 

抽象類:用來被繼承,又不需要創建這個類的對象的類。創建抽象類使用abstract關鍵字。

abstract關鍵字可加在類前還可以加在方法前面,那么該方法稱為抽象方法(用來被子類重寫,不能有方法體)

下面是抽象類和抽象方法的實例:

 

public class Test{

       public static void main(String args[]){

              Cat c = new Cat();

              c.sleep();

              }

       }

      

abstract class Animal{

       String furColor;

      

public void ecstasy(){

         System.out.println("------ecstasy-------");

         }

public abstract void sleep();

}

      

class Dog extends Animal{

       String furColor;

      

       public void sleep(){

              System.out.println("Dog is sleeping");

              }

       }

      

class Cat extends Animal{

       String furColor;

       public void sleep(){

              System.out.println("Cat is sleeping");

              }

       }

 

 

具有抽象方法的類一定是抽象類;抽象類既可以有抽象方法和又可以有非抽象方法

 

常量:final關鍵字加在變量前面,該變量變為常量,在定義常量的時候一定要初始化值

 

接口(interface)(標準、規范)特殊的抽象類,只能有抽象的方法和常量

類可以實現接口 class XXX implements XXX{} ,類實現接口必須遵循其所有方法;

多實現:一個類可以實現多個接口(區別繼承,只能單繼承)
接口之間是繼承關系。