final关键字(太监类)
常用四种用法:1、成员变量 2、方法
3、类 4、局部变量
1.修饰方法: final class 类名 { }
2.修饰方法: 修饰符 final 返回值类型 方法名(参数列表){// 方法体 }
3.修饰变量: final String USERNAME = "张三"; 被修饰变量需用大写。
4.局部变量引用类型 final User u = new User();
final与abstract两个关键字冲突,不能同时使用。
需要注意的是:
当基本类型的数据来说,不能变的是【数据值】;引用类型的数据类型则是地址值:array =new int【3】(错误写法)。
stu=new Student();(错误写法)
权限修饰符
分清一个四个修饰符的权限大小
public protected default(空的) private |
同一类中 √ √ √ √ |
同一包中(子类与无关类) √ √ √ |
不同包的子类 √ √ |
不同包中的无关类 √ |
建议:
成员变量使用private ,隐藏细节。
构造方法使用public ,方便创建对象。
成员方法使用public ,方便调用方法。
内部类(夹心类):
1.成员内部类
class 外部类 { class 内部类{} }
访问特点:内部类可以直接访问外部类的成员,包括私有成员。
外部类要访问内部类的成员,必须要建立内部类的对象。
创建内部类格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
2.局部内部类
包含关系,一个属性的组成部分。
格式:一个外部类里一个内部类,一个内部类里面一个内部类:
外部类.This.成员变量(里面的想要访问外面的)
外面想要访问里面的:如上
总结一下各种class定义的时候,权限修饰符的用法:
凡是局部的,都不写权限修饰符!
因为局部变量和内部类创建的对象生命周期不一样。当然跟线程有关系,这个以后再说。
3.匿名内部类
前堤:匿名内部类必须继承一个父类或者实现一个父接口。
格式:
new 父类名或者接口名(){
// 方法重写
@Override
public void method() {
// 执行语句
}
};
什么是匿名对象?
匿名内部类的注意:
综合例子:一个类可以作为一个属性。
引用类型用法总结
1.class作为成员变量
1.interface作为成员变量
Interface作为方法参数和返回值类型