zoukankan      html  css  js  c++  java
  • Java学习之final与匿名内部类篇

    Java学习之final与匿名内部类

    0x00 前言

    续上几篇文章,得知子类继承父类后是可以在父类的基础上进行改写的,那么在程序中有些东西可能是不能让我们给轻易给改动的,那么Java给提供了final关键字。

    0x01 final使用

    final:是不可改变的,可以用来修饰类、方法、变量。

    修饰类格式:

    final class Final {
    
    }
    
    

    修饰方法格式:

        public final void abc(){
            System.out.println("一个不可重写的的方法");
        }
    

    修饰变量:

    final int a =1;
    

    被该关键字修饰的类不能被继承

    被该关键字修饰的方法不能被重写

    被该变量修饰的变量,不能被重新赋值。

    被final修饰的常量名称,一般都有书写规范,所有字母都大写

    0x02 权限修饰符

    前面使用到最多的可能就是pubilc和private,在java中提供了四种访问权限,使用不同的访问权限修饰时,被修饰的内容有不同的访问权限。

    public 公共的
    prorected 受保护的
    default  默认的
    private  私有的
    
    

    image

    这里可以看到public是最大的权限,而private是最小的。

    如果不加修饰符,默认是default。

    0x03 内部类

    格式:

    public class Final{
        public class abc{
            
            
        }
    }
    
    

    内部类访问的特点:
    内部类可以直接访问外部类的成员,包括私有方法。外部类要访问内部类的成员,必须创建内部类的对象。

    创建内部类对象的格式:

    外部类名.内部类型 对象名 = new 外部类型().new 内部类型();

    定义的方式和实例化对象的写法类似。

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

    匿名内部类

    匿名内部类是内部类的简化写法。他的本质是一个带有具体实现父类或父类接口的匿名子对象。

    在代码中比较常用的可能就是匿名内部类。
    在使用到一个接口的时候需要做的几步操作,

    1.定义实现类

    2.重写父接口的方法

    3.实例化实现类对象

    4.调用重写后的方法

    如果是只调用一次的话,那么就可以使用到匿名内部类。

    前提条件是匿名内部类必须继承一个父类或者是父接口。

    new 父类或者接口名(){
        //重写方法
        pubilc void method(){
            ...
        }
    }
    
    

    匿名内部类代码实现:

    这里来定义一个父类:
    
    public abstract class Fu {
        public abstract void fly();
        
    }
    
    
    
    main方法代码:
    
    public class ZiMain {
        public static void main(String[] args) {
    
            Fu f = new Fu() {
                @Override
                public void fly() {
                    System.out.println("会飞");
                }
            };
            f.fly();
        }
    }
    

    0x04 结尾

    一篇文章水完了,在里面用到比较多的可能就是匿名内部类了,如多线程创建的时候,因为线程不能被多次调用,可以直接使用匿名内部类进行创建。

  • 相关阅读:
    Linux 下杀毒可用工具 clamav
    Docker 添加环境系统文件配置
    Docker 空间大小设置
    Docker 扩容 容器空间大小
    bzoj 1088 DP
    bzoj 1096 斜率优化DP
    spoj p104 Matrix-Tree定理
    bzoj 1016 深搜
    WC后记
    bzoj 1301 后缀数组
  • 原文地址:https://www.cnblogs.com/nice0e3/p/13425754.html
Copyright © 2011-2022 走看看