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

2007-10-23 11:20 2814 8 8 分类: 软件与OS
面向对象技术基础(非常好的4)

2007-10-12 23:52


在例3-6中,父类对象a引用的是子类的实例,所以,java运行时调用子类Bcallme方法。
【例3-6
  import java.io.*;
  class A{
     void callme( ) {
      System.out.println("Inside A's callme()method");
     }
  }
  class B extends A{
     void callme( ) {
      System.out.println("Inside B's callme() Method");
     }
  }
  public class Dispatch{
     public static void main(String args[]) {
      A a="new" B();
      a.callme( );
     }
  }

   方法重写时应遵循的原则
  1)改写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。
  2)改写后的方法不能比重写的方法产生更多的例外。

 4 其它



◇ final 关键字
  final 关键字可以修饰类、类的成员变量和成员方法,但final 的作用不同。
  
  1 final 修饰成员变量:
  final修饰变量,则成为常量,例如
  final type variableName;
  修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。

  2 final 修饰成员方法:
  final修饰方法,则该方法不能被子类重写
  final returnType methodName(paramList){
  
  }


  3 final 类:
  final修饰类,则类不能被继承
  final class finalClassName{
  
  }
  实例成员和类成员
  用static 关键字可以声明类变量和类方法,其格式如下:
  static type classVar;
  static returnType classMethod({paramlist}) {
  
  }
   如果在声明时不用static 关键字修饰,则声明为实例变量和实例方法。
  1) 实例变量和类变量
  每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。
  类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。
  2) 实例方法和类方法
  实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用。
  但类方法不能访问实例变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对象进行调用。类方法中不能使用thissuper关键字。

  例3-7 是关于实例成员和类成员的例子。
【例3-7
  class Member {
    static int classVar;
    int instanceVar;
    static void setClassVar(int i) {
     classVar=i;
     // instanceVar="i"; // 类方法不能访问实例变量
    }
    static int getClassVar()
     { return classVar; }
    void setInstanceVar(int i)
     { classVar="i"; //实例方法不但可以访问类变量,也可以实例变量
     instanceVar=i; }
     int getInstanceVar( )
     { return instanceVar; }
    }
    public class MemberTest{
     public static void main(String args[]) {
         Member m1=new member();
         Member m2=new member();
         m1.setClassVar(1);
         m2.setClassVar(2);
         System.out.println("m1.classVar="+m1.getClassVar()+"
                  m2.ClassVar="+m2.getClassVar());
         m1.setInstanceVar(11);
         m2.setInstanceVar(22);
         System.out.println("m1.InstanceVar="+m1.getInstanceVar
              ()+" m2.InstanceVar="+m2.getInstanceVar());
     }
    }
   java.lang.Object
  类java.lang.Object处于java开发环境的类层次的根部,其它所有的类都是直接或间接地继承了此类。该类定义了一些最基本的状态和行为。下面,我们介绍一些常用的方法。
  equals() :比较两个对象(引用)是否相同。
  getClass():返回对象运行时所对应的类的表示,从而可得到相应的信息。
  toString():用来返回对象的字符串表示。
  finalize():用于在垃圾收集前清除对象。
  notify(),notifyAll(),wait():用于多线程处理中的同


 


      转帖:http://hi.baidu.com/ng520tx/blog/item/9d1486cb8e2eecfe53664fa3.html

PARTNER CONTENT

文章评论0条评论)

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