我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。 self-transcendence
第11章 类的高级特性
11.1 java类包
类包是为了解决同名的类文件而产生的。
同一个包中的类互相访问时,可以不指定包名。
同一个包中的类不必放在同一个位置,假设有两个包一个在c盘一个在d盘,只要将classpath分别指向这两个位置即可。
Java包的命名规则是全部使用小写字母。
定义包名时通常使用创建者的Internet域名的反序,因为internet域名是独一无二的,包名自然不会冲突。
-------------------------------------------------------------------------
11.2 final变量
Final关键字可以用于定义常量
Final定义成员变量不可更改
Final定义成员变量是没有赋值成为空白final
在构造方法中为空白final赋值
设置final参数,不可以改变参数x的值
局部变量定义为final,不可以改变局部变量的值
------------------------------------------------------------------------
11.3 final方法
定义为final的方法不能被重写
将方法定义为final类型可以防止子类修改该类的定义与实现方式,同时定义为final的方法的执行效率要高于非final方法。
用private修饰符定义的方法,隐式被指定为final方法,不会被子类覆盖。(向上转型例外)
-------------------------------------------------------------------------
11.4 final类
定义为final的类不能被继承
如果某个类被设置为final形式,则类中的所有的方法都被隐式设置为final形式,但是final类中的成员变量可以被定义为final或者非final形式
---------------------------------------------------------------------------
11.5 内部类
11.5.1 成员内部类
在类中定义的类叫做内部类
内部类可以分为成员内部类,局部内部类,匿名类
在外类中使用内部类,内部类中可以直接存取外类的私有成员变量和方法。
内部类的实例一定要绑定在外部类的实例上,如果从外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。但是内部类的成员只有内部类能使用。(怀孕的妈妈)
创建内部类,一定要先创建外部类,然后在用外部类创建内部类。
这里还有一个内部类向上转型为接口的案例和知识点,需要时再翻书处理
11.5.2 局部内部类
内部类不但可以在类中定义,还可以在类的局部位置定义,比如累的方法或任意的作用域中
11.5.3 匿名内部类
没有名称的内部类,作用是创建一个匿名类的对象。
11.5.4 静态内部类
一般不常用
11.5.5 内部类的继承
Extends ClassA.ClassB
在某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。