Java提升学习(四):final关键字、内部类

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表达式结合将使得代码更简洁,但是可读性就复杂起来。

面向对象编程笔记完结!撒花★,°:.☆( ̄▽ ̄)/$:.°★

猜你喜欢

转载自blog.csdn.net/weixin_43818177/article/details/105526797