Java提升学习(四):final关键字、内部类
一、final关键字
final
关键字以为:不可改变的。可用于修饰类、方法和变量。
- 当被修饰类的时候,类不可被继承。
- 当被修饰方法的时候,不可被覆盖重写。
- 当被修饰变量的时候,不可被赋值。
修饰类:
public final class 类名 {
}
修饰方法:
修饰符 final 返回值类型 方法名(参数列表){
//方法体
}
当方法被@Override重写的时候,就会报错。
修饰变量
public class FinalDemo1 {
public static void main(String[] args) {
// 声明变量,使用final修饰
final int A;
// 第一次赋值
A = 10;
// 第二次赋值
A = 20; // 报错,不可重新赋值
// 声明变量,直接赋值,使用final修饰
final int B = 10;
// 第二次赋值
B = 20; // 报错,不可重新赋值
}
}
被final
修饰的常量名称,一般都有书写规范,所有字母都大写。
二、内部类
将一个类A包含到另一个类B中,A称为内部类,B称为外部类。
class B {
//外部类
class A {
//内部类
}
}
- 定义:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
- 访问特点:
内部类可以直接访问外部类的成员,包括私有成员。
外部类要访问内部类的成员,必须要建立内部类的对象。
public class first {
final int NUM = 1 ;
public class first_o1{
public void methodo1(int num) {
System.out.print(NUM);//注意,这里前往别用this.NUM来调用
System.out.print(num);
}
}
public void methodo2(int num) {
System.out.print(num);
}
}
public class text {
public static void main(String[] args){
first a = new first();
first.first_o1 b = new first().new first_o1();
b.methodo1(3);
a.methodo2(4);
}
}
//------------输出------------
134
- 匿名内部类
是内部类的简化写法。它的本质是一个带具体实现的 父类或者父接口的 匿名的
子类对象。
匿名内部类必须继承一个父类或者实现一个父接口。
new 父类名或者接口名(){
// 方法重写
@Override
public void method() {
// 执行语句
}
};
示例:
public abstract class first {
public abstract void method();
}
public class text {
public static void method_q(first a) {
a.method();
}
public static void main(String[] args){
method_q(new first() {
@Override
public void method() {
System.out.print("hahaha");
}
});
}
}
//------------输出-------------
hahaha
匿名内部类的优点是原来调用抽象方法得起码三步,建立父类,继承父类,调用子类并实例化。然而这里虽然本质不变,但是代码比原来少了很多。若和lambda表达式结合将使得代码更简洁,但是可读性就复杂起来。
面向对象编程笔记完结!撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。