JAVA基础:类的高级概念注意细节

来源:互联网 发布:初中视频讲课软件 编辑:程序博客网 时间:2024/05/16 10:42

1.      访问修饰符4个:private protectedpublic、默认(不写访问修饰符)

private只有本类可以访问

protected本类,同包类,子类可以访问

默认,本类和同包类可以访问

public,都可以访问

2.      封装的好处

A. 可以讲某个属性变为只读和只写

B. 可以对外部设置的值进行有效性的控制

C. 可以对外隐藏内部存储数据结构

3.      Static静态

A. Static属性:

(1)      全类共享一个值

(2)      跟对象无关(只跟类有关)——类属性

(3)      单独存放在数据段的静态区

(4)      类加载期就被产生了

(5)      一般和常量属性绑在一起

B. static方法

(1)      static修饰的方法,只能代用static修饰的属性和方法

(2)      static方法,可以调用static的属性和方法

(3)      跟对象无关(只跟类有关)——类方法

(4)      在类加载时static被优先加载,非static属性后加载,先加载的static方法无法找到对象

(5)      工具类的工具方法才会有这个特性

C. static不能修饰构造方法

4.      初始化块:别名(实例初始化块)在产生对象时自动调用

实例初始化块会在产生对象之后,但是在执行构造方法,我们写的代码之前被自动给调用,它的执行时机,导致它并不常用,因为完全可以把代码直接写在构造方法里面

静态初始化块:

A. 不能操作非static的属性和方法

B. 在加载器被自动执行,且执行一次

C. 当需要预先加载一些资源动作的时候,这种代码就写在静态初始化块中

5.      内部类:可以在类的内部定义类,这种在类的内部定义的类,被称为内部类,内部类所在的类,被称为外部类

根据位置的不同可以分为成员内部类和局部内部类

成员内部类

A. 成员内部类:定义在外部类中,和外部类的属性/方法/构造,处于平行地位

B. 成员内部类可以拥有访问修饰符,使用后的效果和属性/方法/构造是一样的

C. 成员内部类可以定义各种属性/构造/方法/初始化块,甚至可以再定义内部类

D. 成员内部类拥有独立的class文件,其命名规则——外部类的类名$内部类的类名

E.  成员内部类中的属性和方法不能是static

F.  成员内部类的用法仍然是产生对象

G. 成员内部类在外部产生的语法:

先要new出外部类对象,然后用外部类对象.的形式new出对象

H. 当内部类调用外部类方法时,语法为:外部类名.this.外部类名

静态内部类——成员内部类的特例——用static修饰的成员内部类特例

A.区别:静态内部类,属性和方法可以使static,与普通成员内部类不同

B.静态内部类在外部产生的语法:无需产生外部类的对象,直接使用外部类的类名.内部类类名的方法作为它的类型,new出来即可

C.静态内部类的方法不能操作外部类非静态属性,方法,只能操作外部类中的静态属性和方法

局部内部类——定义在外部类的某个方法中

区别:A. 局部内部类拥有独立的class文件,其class文件的名字规则——外部类的类名+$+序号+内部类名,序号从1开始

B.局部内部类不能加访问修饰符,使用后的效果和局部变量是一样的,仅仅在本方法内部可以使用——直接new出来用内部类对象.的方式进行操作

C.局部内部类中的属性和方法不能是static

D.在局部内部类方法中操作外部类的属性和方法

E.局部内部类不能访问它所在的外部类方法中局部变量,只能访问方法中的常量

      匿名内部类——局部内部类的特例——由于没有类名,所以只能使用1次,在产生它的对象的同时去定义它——语法极其特殊

A. 匿名内部类拥有独立class文件,其class文件的名字规则——外部类的类名+$+序号

B. 匿名内部类连类名都没有,没有class关键字,当然就不能使用任何访问修饰符

C. 匿名内部类产生对象的语法和类的定义语法是写在一起的,只能用这一次

D. 匿名内部类不可以定义构造(没有类名)

E.  匿名内部类的属性和方法不能是static

F.  如果想操作它所在的方法内的属性和方法,只能在new出来以后马上操作属性/方法,可以操作到私有的属性和方法

0 0
原创粉丝点击