这篇学习总结从final关键字开始
- final概念及四种用法
final关键字有四种用法,即可以修饰一个类,一个方法,一个局部变量,一个成员变量
1.当他用于修饰一个类时,public final 类名称{//…} 含义为:这个类不能有任何子类(太监类)
注意:一个类如果是final的,那么其中所有成员方法都无法覆盖重写
2.用于修饰成员方法,那么这个方法就是最终方法,也就是不能覆盖重写
注意:对于类,方法来说abstract关键字与final关键字不能同时使用,因为矛盾
3.用于修饰局部变量,一旦赋值,终生不变(唯一一次赋值)
对于基本类型,不可变是数值不可变
对于引用类型,不可变是地址值不可变
4.用于修饰成员变量,如果使用final关键字修饰那么这个变量也是不可变的。
由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了
对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值
必须保证类当中所有重载的构造方法都最终对final的成员变量赋值
-四种权限修饰符
public > protected > (default) > private
同一个类 Yes Yes Yes Yes
同一个包 Yes Yes Yes No
不同包子类 Yes Yes No No
不同包菲子类 Yes No No No
-
内部类的概念与分类
如果一个事物的内部包含另一个事物,那这就是一个类内部包含另一个类(如身体与心脏的关系,汽车与发动机的关系)
分类1.成员内部类2.局部内部类(包含匿名内部类) -
成员内部类
修饰符 class 类名称{
修饰类 class 类名称{
}} 注意:内用外,随意访问,外用内,需要内部类对象
如何使用内部类
1.间接方式:在外部类的方法中,使用内部类,然后main只是调用外部类的方法。
2.直接方法 外部类名称.内部类名称 对象名 = new 外部类名称().内部类名称();
内部类同名变量访问
如果出现了重名现象,那么格式是外部类名称.this.外部类成员变量名 -
局部内部类
如果一个类是定义在一个方法内部的,那么这就是一个局部内部类,这个局部类只有当前所属的方法才能使用它,出了这个方法外面就不能用了
格式…同上
定义一个类的时候,权限修饰符规则
1.外部类>>public>>(default)
2.成员内部类>>public > protected > (default) > private
3.局部内部类(什么都不写)
注意:如果局部内部类希望访问所在方法的局部变量,那个局部变量必须是【有效final的】:因为生命周期不一样 -
匿名内部类
如果接口的实现类(或者是父类的子类)只需要使用唯一一次,那么这种情况下就可以省略掉该类的定义,而使用【匿名内部类】
格式: 接口名称 对象名 = new 接口名称(){
…要覆盖重写所有抽象方法…}
注意:匿名内部类是省略了【实现类/子类名称】,但是匿名对象是省略了【对象名称】因此两个不一样 -
类可以作为成员变量的类型
就像是int num ;Weapons weapons; 接口也可作为成员变量与方法参数与返回值!