原创 转帖 :面向对象技术基础(非常好的3

2007-10-23 11:19 2696 9 9 分类: 软件与OS
面向对象技术基础(非常好的3

2007-10-12 23:51


【表3-1】 java中类的限定词的作用范围比较



同一个类


同一个包


不同包的子类


不同包非子类


private


*





default


*


*




protected


*


*


*



public


*


*


*


*


2 继承性
  通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。
   创建子类
  格式:
  class SubClass extends SuperClass {
  
  }
   成员变量的隐藏和方法的重写
  子类通过隐藏父类的成员变量和重写父类的方法,可以把父类的状态和行为改变为自身的状态和行为。
  例如:
  class SuperClass{
    int x; …
    void setX( ){ x="0"; } …
  }
  class SubClass extends SuperClass{
    int x;   //隐藏了父类的变量x
    
    void setX( ) { //重写了父类的方法 setX()
    x=5; } ….
  }
  注意:子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。
  ◇ super

  java中通过super来实现对父类成员的访问,super用来引用当前对象的父类。Super 的使用有三种情况:
  1)访问父类被隐藏的成员变量,如:
    super.variable;
  2)调用父类中被重写的方法,如:
    super.Method([paramlist]);
  3)调用父类的构造函数,如:
    super([paramlist]);

【例3-5
  import java.io.*;
  class SuperClass{
    int x;
    SuperClass( ) {
     x=3;
     System.out.println("in SuperClass : x=" +x);
    }
     void doSomething( ) {
     System.out.println("in SuperClass.doSomething()");
    }
  }
  class SubClass extends SuperClass {
    int x;
    SubClass( ) {
     super( );    //调用父类的构造方法
     x=5;      //super( ) 要放在方法中的第一句
     System.out.println("in SubClass :x="+x);
    }
     void doSomething( ) {
     super.doSomething( ); //调用父类的方法
     System.out.println("in SubClass.doSomething()");
     System.out.println("super.x="+super.x+" sub.x="+x);
    }
  }
  public class Inheritance {
     public static void main(String args[]) {
     SubClass subC="new" SubClass();
     subC.doSomething();
    }
  }

 3 多态性
  在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。

  1) 编译时多态
  在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。

  2) 运行时多态
  由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

   重写方法的调用原则java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。

     转帖: http://hi.baidu.com/ng520tx/blog/item/3bf8a8c3afc55056b219a8a3.html
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条