Java内部类、static关键字、final

一.内部类
1.内部类的概念:
a.在一个类的内部书写另一个类。
b.将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。

2.内部类的分类:
a.同级类:
严格意义来讲不算内部类,只不过是在同一个.java中定义多个类。
b.成员内部类:
在一个类类体中定义另一个类,将定义类的当做是类的成员。
c.局部内部类:
在一个类的方法中定义一个类。
d.匿名内部类:
创建具有实现方法的无名称的类。

3.同级类:
在一个Java文件中定义多个不同的类,注意在同一个Java文字中只允许有一个public修饰的类,并且main方法必须书写在public的类中(因为开发工具默认根据当前的文件名调用对应的class文件)
注意:同级类的书写与额外创建java文件进行类的书写没有区别

4.成员内部类:
a.书写在类体中的类称为成员内部类(将类的声明创建当做是当前类的成员属性)
b.书写在类体中的类称之为内部类,书写了内部类的类称之为外部类
c.使用格式:内部类书写在外部类中,所以在使用内部类时。需要通过外部类进行使用。
如:外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
d.内部类访问特点:
(1)内部类可以直接访问外部类的成员,包括私有成员。
(2)外部类要访问内部类的成员,必须要建立内部类的对象。
实例:
在这里插入图片描述

5.局部类:
a.书写在方法中的类,称之为局部内部类。
b.在方法中书写内部类,与变量声明一样,不能书写访问权限修饰符,只能在当前方法中使用。

实例:
在这里插入图片描述

6.匿名内部类:
a.是一种特殊的局部类,在进行创建实现类或子类时,如果创建的类只使用一次,则可以使用匿名内部类的形式进行书写。
b.匿名内部类必须 继承一个父类 或者 实现一个父接口。
c.使用:
(1)匿名内部类书写的过程就是使用的过程,将原有的实现类的类体书写在创建的接口后,用于匿名创建拥有指定功能的对象。
(2)是scale语言函数式编程的基础,之后的lambda表达式也是实现这样匿名内部类的书写。

实例:
在这里插入图片描述
在使用实现类或子类,无需创建指定的子类与实现类,可以通过父类或接口直接使用new匿名内部类的形式创建一个临时使用的子类或实现类,创建对象并进行使用。

二.static关键字:
1.static关键字概念:
被static修饰的变量称之为类变量,该变量为当前类下所有对象公用,无需创建对象,可以直接通过类名.属性进行使用。
2.JVM的类加载顺序:
static声明的静态资源 > new > 构造方法constructor
3.特点:
(1)static声明的资源只能被初始化一次;
(2)修饰变量,称为静态变量,局部变量(如方法中的变量)不能被static 修饰,因为static就有全局的意思;
(3)修饰方法,称为静态方法,静态方法只能调用其他静态资源,不能调用非静态变量,不能应用this和super,因为静态资源的加载先于实例化;
(4)被static修饰的变量和方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被该类的所有实例共享
(5)修饰内部类(静态类),外部类不需要实例化,可以直接通过外部类名调用

实例:
1.
在这里插入图片描述

在这里插入图片描述
无需创建对象,可以直接通过类名.属性进行使用

在这里插入图片描述
被static修饰的方法为静态方法也叫类方法,无需创建对象,可以直接通过类名.方法名()直接调用

补充:

a.实例方法和所属的实例绑定
解释:
同一个类中的各个对象都有各自的方法,互相没关系,互不影响。
b.静态(static)方法和所属的类绑定
解释:
静态方法不会在实例化创建对象时,为对象创建一个新的static方法,所有的对象公用一个static方法,即多个实例对象先后调用该静态方法,只保存最后一次造作的结果。
c.静态块
解释:
对静态变量进行初始化,每个静态代码块只会执行一次。
由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。 如果类中包含多个静态代码块,那么将按照“先定义的代码先执行,后定义的代码后执行”。

实例:
在这里插入图片描述
三.final关键字:
1.final概述:
final:最终的、不可修改的。用于修改不同的位置实现不同的功能,主要修饰类、方法和变量。

2.final的书写和使用:
a.修饰类:在类关键字class之前 书写final关键字 修饰当前类,使当前类变为最终的类(不能继承)
格式: final class 类名 {
}
b.修饰方法:如果方法使用final修饰 代表这个方法为最终方法 不允许被修改(可以被继承不能被重写)
格式: 修饰符 final 返回值类型 方法名(参数列表){
//方法体
}
注意:重写被final修饰的方法,编译时就会报错!
c.修饰变量:变量保存的是地址,被final修饰的变量称之为常量(变量保存的地址不能修改)
3.总结:
(1)final关键字代表最终的,用于修饰类、方法、变量。
(2)被final修饰的类无法被继承,被final修饰的方法,可以被继承不能被重写,被final修饰的变量称之为自定义常量,只能被赋值一次。
(3)如果修饰的局部变量,可以只声明不赋值,但是在使用时必须进行赋值且只能赋值一次。
(4)如果修饰的是全局变量,在声明时必须赋值,因为如果不进行赋值在进行创建对象时可能会使用默认值赋值,导致属性无意义。
(5)如果修饰的是引用数据类型,变量保存的是地址,地址不能修改,但是对象属性的地址可以修改。
(6)被final修饰的变量,标识符一般使用大写字母进行命名,多个单词组成使用_连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值