java面向对象(中)

二、类的封装和继承

1.属性私有化,使用getter和setter方法获取和设置属性。

2.继承使用关键字extends,派生类集成了父类除private标记外的所有属性和方法。示例代码如下:

class Father{

   protected int age;

   protectedString name;

   public Father(String name,int age){

      this.age=age;

      this.name=name;

   }

   public void Print(){

      System.out.println("Father:"+this.name+"--"+this.age);

   }

}

class Son extends Father{

   public Son(String name,int age){

      super(name,age);

      super.Print();

   }

}

 

public class ExtendsDemo {

   public static void main(String[] args) {

      new Son("guoxu",15);

   }

}

 

3.在java中子类中使用super属性调用父类方法,如果是构造方法,则直接使用super.()。在php中则使用parent::fun()来调用父类方法。在python中则有点不同,可以说是比较奇特。

调用父类的构造方法:父类的名称.__init__(self),调用父类的普通方法,super(父类名称,self ) .fun(args)。

4.      java中不允许多重继承

5.      父类private声明的属性和方法不会被子类继承。

6.      子类的实例化一定会调用父类的构造方法,所以如果父类构造方法被申明为private,将无法被子类实例化,这样将无法被子类继承。成为一个单例类。

7.      方法的覆写和重载的区别。覆写权限不能变小。重载,返回值不一样。

8.      使用abstract来声明抽象类,抽象类至少应该包括一个抽象方法,也可以包含普通方法。抽象类也可以有构造方法。

抽象类,可以由子类来进行实例化。
AbstractClass A=new AbstractSonClass();

9.      interface可以定义一个接口。接口是一种特殊的类,由抽象方法和全局常量组成,由其继承接口的类实现。可以省略权限类型,直接写返回参数类型和方法名称及参数。implements关键字来实现继承接口。示例代码如下:

interface USB{

   void start();

   void stop();

}

class Computer{

   public static void plug(USB u){

     u.start();

     u.stop();

   }

}

class Flash implements USB{

   public void start(){

     System.out.println("u盘启动");

   }

   public void stop(){

     System.out.println("u盘停止");

   }

}

public class InterFaceDemo {

   public static void main(String[] args) {

     // TODO Auto-generated method stub

     Computer.plug(new Flash());

   }

 

}

可以继承多个接口

posted @ 2011-08-07 21:48  rorshach  阅读(112)  评论(0编辑  收藏  举报