面向对象编程(二)

对象的转型分 向上转型 和 向下转型(强制类型转换)

向上转型:父类的引用指向子类的对象,但是不能使用子类多出来的方法。

如:

 

 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{} ,类实现接口必须遵循其所有方法;

多实现:一个类可以实现多个接口(区别继承,只能单继承)
接口之间是继承关系。