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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值