final修饰
类:不能被继承
方法:不能被重写
变量: 不能重新赋值
修饰变量:
局部变量
基本类型变量:
注意:循环内创建的变量,每一次都是新的变量,所以被final修饰时,可以进行第二次赋值
引用类型变量:
引用类型的局部变量,被final修饰时,只能指向一个对象,地址不能再更改,但是不影响对象内部的成员变量的修改
成员变量:
final修饰的成员变量,初始化的问题,只能是直接赋值,或者构造方法赋值
权限修饰符:
public: 公共的
producted 受保护的
default: 默认的
private: 私有的
同一类中:public producted default private
同一包中 :public producted default
不同包的子类:public producted
不同包的无关类: public
内部类:
成员内部类:
定义在类的内部方法的外部
访问的特点:
内部类可以直接访问外部类的成员,包括私有成员
外部类要访问内部的成员,必须要建立内部类对象
创建内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名 ().new 内部类名()
内部类仍然是一个独立的类,在编译之后 内部类会被编译成独立的.class 文件,但是前面冠以外部类的类名和 符 号 比 如 : P e r s o n 符号 比如:Person 符号比如:Person$Heart.class
匿名内部类(开发中最常用的):
是内部类的简化写法,他本质是一个带具体实现的父类或者父接口的匿名子类对象
()以接口举例,当你使用一个接口时,似乎得做如下几步操作, 1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法 我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快 捷方式。)
前提:匿名内部类必须继承一个父类或者实现一个父接口
格式:
new 父类名或接口名(){
@Override
public void method(){
//执行语句
}
}
引用类型用法总结
class作为成员变量
类作为成员变量时,对他进行赋值操作,实际上,是赋予给他该类的一个对象
interface作为成员变量
接口作为成员变量时,对它进行赋值操作,实际上,是赋给它该接口的一个子类对象
interface作为方法参数和返回值类型
传入的和返回的都是该接口的子类对象
例如:LIst接口的实现类ArrayList