第八章 类高级概念

来源:互联网 发布:淘宝手机排名 编辑:程序博客网 时间:2024/04/26 01:35

一、访问控制属性

public:权限最大的。所有的地方都可以用,可以直接用实例化对象用“.”来访问。如方法和属性。不过为了保证封装性,一般属性都用private,不对外提供或继承的方法也用private。

private:权限最小的,只有在类的定义了中才能使用。就是类自身才能使用。可以很好的保持封装的特性。

protected:只比public小,在同胞中和子类中都可访问,用“.”。

什么都不写: 默认的,在同胞中可以访问。

二、代码块

类中的代码块一定在 构造器之前执行。

 

static:静态的,共享的。被它修饰的属性或者方法,是整个类共用的。可以用ClassName直接访问。当然对象名也可以

其他属性,方法:一般都是每个对象私有的,必须先要有对象,才能使用。

静态方法中,只能访问静态的属性或者方法,其他动态的加载时不能确定。

 

静态的都是加载时执行的。所以在没有对象之前就存在了,类名可以访问它,但是它不能访问 不存在的对象。

但是没有对象,就没有对象的属性和方法。无法访问。

 

静态代码块:static{*************}这个代码块是在类加载器加载class文件时,执行的。只有一次。用作环境和资源的初始化。

普通代码块:{****************}它是在实例化每个对象时比如new    ClassName()都会调用的,而且比构造器先执行。一般很少用

三、内部类

成员内部类的保存:

OuterClassName$InnerClassName.class

1.成员内部类:

写在属性后面的,没有在方法体中。    Outer  out = new Outer();      Inner    in  =  out.new    Inner();

2.静态内部类:

如果成员内部类被static修饰,那么他就是静态内部类了,跟静态变量一样,整个类共享;可以通过类名直接使用。

Inner    in  =  new    Outer.Inner();

3.局部内部类:

写在方法体中,所以可以类名相同;且只能在方法中使用。它的生命周期在这个方法中,外部不可见。

局部内部类的保存:

OuterClassName$这里为出现的第几次InnerClassName.class

4.匿名内部类:

如果写在方法的参数中,如  Method(new ClassName(){ 属性,方法}

);就是一个匿名内部类了。只有使用,没有名字(引用指向它)。

 

列子:

public class FormatTest {private static int maxStringLength;private static double minSize;public FormatTest(){}public FormatTest(int maxStringLength,double minSize){this.minSize = minSize;this.maxStringLength = maxStringLength;}public static boolean testStringLength(String str){if(str.length() <= maxStringLength){return true;}else{return false;}}public static boolean testDouble(double d){if(d >= minSize){return true;}else{return false;}}}


 

原创粉丝点击