1、final关键字
含义
final关键字代表最终的、不可改变的
final:不可改变。可以用于修饰类、方法和变量。
类:被修饰的类,不能被继承。
方法:被修饰的方法,不能被重写。
变量 :被修饰的变量,不能被重新赋值,
当final关键字用来修饰一个类的时候,
格式:
public final class 类名称 {
// ...
}
当final关键字用来修饰一个方法的时候,
格式:
修饰符 final 返回值类型 方法名称(参数列表) {
// 方法体
}
2、权限
概述
在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限, public:公共的 protected:受保护的 default:默认的 private:私有的
public | protected | default(空的) | private | |
同一类中 | √ | √ | √ | √ |
同一包中(子类与无关类) | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包中的无关类 | √ |
public具有最大权限。private则是最小权限。
编写代码时,如果没有特殊的考虑,建议这样使用权限
成员变量使用 private ,隐藏细节。构造方法使用 public ,方便创建对象,
成员方法使用 public,方便调用方法。
3、内部类
内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。
成员内部类
成员内部类:定义在类中方法外的类
定义格式:
class 外部类{
class 内部类{
}
}
在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 car 中包含发动机类 Engine,这时,Engine 就可以使用内部类来描述,定义在成员位置。
代码举例:
class Car { //外部类
class Engine { //内部类
}
}
如何建立内部类的对象
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
//如果在同一个类中
内部类名 对象名 = new 外部类型().new 内部类型();
匿名内部类【重点】
匿名内部类:是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 图名的 子类对象开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作:
1.定义子类
2.重写接口中的方法
3.创建子类对象
4.调用重写后的方法
匿名内部类必须继承一个父类或者实现一个父接口
格式
new 父类名或者接口名(){
// 方法重写
@Override
public void method() {
// 执行语句
}
};
4、引用类型用法总结
1、class作为成员变量
类作为成员变量时,对它进行赋值的操作,实际上,是赋给它该类的一个对象。
2、interface作为成员变量
接口作为成员变量时,对它进行赋值的操作,实际上,是赋给它该接口的一个子类对象(自定义实现类或匿名内部类)。
interface作为方法参数和返回值类型
接口作为参数时,传递它的子类对象。
接口作为返回值类型时,返回它的子类对象。