孙Cloud的Java学习博客-10.5-final关键字与内部类

这篇学习总结从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; 接口也可作为成员变量与方法参数与返回值!

猜你喜欢

转载自blog.csdn.net/weixin_44719191/article/details/108720500
今日推荐