当前位置:   article > 正文

重温经典-JAVA(3)

重温经典-JAVA(3)

Final、权限 、内部类、引用类型

final: 不可改变。可以用于修饰类、方法和变量。

类:被修饰的类,不能被继承(太监类),那么其中所有的成员方法都无法进行覆盖重写。

方法:被修饰的方法,不能被重写。

变量(成员变量、局部变量):被修饰的变量,不能被重新赋值。局部变量中:“对于基本类型来说,不可变说的是变量当中的数据不可改变,对于引用类型来说不可变的是变量当中的地址值不可改变,地址中的内容可变。成员变量中:如果使用final关键字修饰,那么这个变量也照样时不可变。1、由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了。2、对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。3、必须保证类当中所有重载的构造方法,都最终会对final 的成员变量进行赋值。成员变量中没有set构造方法,因为不可重新赋值。

Java中有四种权限修饰符:如下图

 

内部类的定义:将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。

分类:(1)成员内部类(2)局部内部类(包含匿名内部类)

成员内部类的定义格式:

修饰符 class 外部类名称{

      修饰符 class 内部类名称{

        }}

注意:内用外,随意访问;外用内,需要内部类对象。

使用成员内部类有两种方式:

1、间接方式:在外部类的方法当中,使用内部类;然后main只是调用外部类的方法。

2、直接方式,公式:

类名称 对象名 =new 类名称();

【外部类名称.内部类名称 对象名 =new 外部类名称().new 内部类名称();】

内部类仍然是一个独立的类,在编译之后内部类会被编译独立的.class文件,但是前面冠以外部类的类名和$符号。比如,Person$Heart.class

若出现了重名现象,那么格式是:外部类名称.this.外部类成员变量名,具体如图:

 

注意

局部内部类和成员内部类的区别在于,局部内部类在方法里面,而成员内部类在方法外。

局部内部类定义和格式如下:

 

局部内部类只能自己在定义的时候实现,不能再方法外面定义。

类的权限修饰符小结:

public >protected>(default)>private

定义一个类的时候,权限修饰符规则:

1.外部类:public/(default)

2.成员内部类:public /protected/(default)/private

3.局部内部类:什么都不能写,不是代表default 。因为default 代表本包中可以访问,而局部内部类只能方法自己调用。包内其它方法不能用。

局部内部类,如果希望访问所在方法的局部变量,那么这个局部变量必须是有效final的。备注:从Java 8+开始,只要局部变量事实不变,那么final 关键字可以省略。

原因:

1.new出来的对象再堆内存当中。

2.局部变量是跟着方法走的,在栈内存当中。

3.方法运行结束之后,立刻出栈,局部变量就会立刻消失。

4.但是new出来的对象在堆当中持续存在,直到垃圾回收消失。

举例如图:

 

如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】。

匿名内部类的定义格式:

接口名称 对象名=new 接口名称(){

//覆盖重写所有抽象方法.

}

举例:

另外需要注意几点问题:

1.匿名内部类,在创建对象的时候,只能使用唯一一次。如果希望多次创建对象,而且类的内容一样的话,那么就必须使用单独定义的实现类了。

2.匿名对象,在调用方法的时候,只能调用唯一一次。

3.匿名内部类是省略了【实现类/子类名称】,但是匿名对象是省略了【对象名称】

强调:匿名内部类和匿名对象不是一回事。

举例:

 

在实际的项目开发中,引用类型的使用非常重要,也是非常普遍的。我们可以在理解基本类型的使用方式基础上,进一步去掌握引用类型的使用方式。基本类型可以作为成员变量、作为方法的参数、作为方法的返回值,那么当然引用类 型也是可以的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/605332
推荐阅读
相关标签
  

闽ICP备14008679号