Eclipse RCP 学习过程(三)

 类定义的语法规范:

[类的修饰字] class 类名称 [extends 父类名称][implements 接口名称列表]

 { 

 

       变量定义及初始化;

 

       方法定义及方法体;

 

}

类的修饰字:  [public] [abstract | final]

              缺省方式为 friendly

继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类,父类包括所有直接或间接被继承的类。Java中不支持多重继承。通过在类的声明中加入extends子句来创建一个类的子类:

class SubClass extends SuperClass

{

……

}

 如果缺省extends子句,则该类为java.lang.Object的子类。

子类可以继承父类中访问权限设定为public protected default的成员变量和方法,但是不能继承访问权限为private的成员变量和方法。


在一个类的内部声明的类,称为内嵌类。

内嵌类只能在包含它的类中使用,同时它可以看作是该包含类的一段特殊代码,可以直接使用该包含类的变量和方法。内嵌类编译后也会形成一个单独的class,但它附属于其包含类。

public class Stack {

    private Vector items;

    ...//code for Stack's methods and constructors not shown...

    public Enumeration enumerator() {

        return new StackEnum();

    }

    class StackEnum implements Enumeration {

        int currentItem = items.size() - 1;

        public boolean hasMoreElements() {

            return (currentItem >= 0);

        }

        public Object nextElement() {

            if (!hasMoreElements()) throw new NoSuchElementException();

            else return items.elementAt(currentItem--);

        }

     }

}


 

Java 名字空间及访问规则

每个类都拥有自己的名字空间,即指类及其方法和变量可以在一定的范围内知道彼此的存在,可以相互使用。对类而言:

abstract类:不能直接产生属于这个类的对象;

final类:不能被其他任何类所继承(安全的考虑)

public类:不但可以被同一程序包(package)中的其它类使用,别的程序包中的类也可以使用;

friendly(缺省,包访问类):只能被本程序包中的其它类使用,不能被别的程序包中的类使用。

当一个类可以被访问时,对类内的成员变量和成员方法而言,其应用范围可以通过施以一定的访问权限来限定。

          同一个类中  同一个包中  不同包中的子类  不同包中的非子类(任意类)    

private                                  

default                                       

protected                                                   

public                                                                        

public: 任何其它类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。

protected:同一类,同一包可以使用。不同包的类要使用,必须是该类的子类。

private:不允许任何其他类存取和调用。

friendly(default,前边没有修饰字的情况):在同一程序包中出现的类才可以直接使用它的数据和方法.

当子类中的变量名与父类的相同,父类的变量被遮盖。

final在类之前

表示该类是最终类,不能再被继承。

final在方法之前

表示该方法是最终方法,该方法不能被任何派生的子类覆盖。

final在变量之前

表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。

static 在变量或方法之前,表明它们是属于类的,称为类方法(静态方法)或类变量(静态变量)。若无static修饰,则是实例方法和实例变量。

类变量在各实例间共享

类变量的生存期不依赖于对象,相当于C语言中全局变量的作用。其它类可以不用通过创建该类的实例,直接通过类名访问它们。

public class StaticVar
{
public static int number 5;
}
public class OtherClass
{
public void method()
{
       int x = StaticVar.number ;
}
}

同一个类的实例方法可以访问该类的类变量和类方法;

而类方法只能访问该类的类变量和类方法,不能直接访问实例的变量和方法。

同一个类的实例方法可以访问该类的类变量和类方法;

而类方法只能访问该类的类变量和类方法,不能直接访问实例的变量和方法。

不正确的引用

 

class StaticError

{

    String mystring=“hello”;

    public static void main(String args[])

    {

        System.out.println(mystring);

    }

}

编译时错误信息: nonstatic variable mystring cannot be referenced from a static context “System.out.println(mystring);”

为什么不正确:只有对象的方法可以访问对象的变量。

解决的办法

1. 将变量改成类变量

class NoStaticError

{

    static String mystring=“hello”;

    public static void main(String args[])

    {

        System.out.println(mystring);

    }

}

2. 先创建一个类的实例

class NoStaticError

{

     String mystring=“hello”;

     public static void main(String args[])

     {

          NoStaticError  noError;

          noError = new NoStaticError(); 

          System.out.println(noError.mystring);

     }

}

抽象类:用abstract关键字来修饰一个类时,该类叫做抽象类;

抽象类必须被继承。

抽象类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。

抽象方法:用abstract来修饰一个方法时,该方法叫做抽象方法。

抽象方法必须被重写

抽象方法只有声明,不能有实现。

定义了抽象方法的类必须是抽象类。

abstract returnType abstractMethod ( [paramlist] );

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值