day 11 final、权限、内部类

    科技2022-07-16  129

    目录

     

    final

    修饰对象:

    1、局部变量

    2、局部变量之引用类型

    3、成员变量

    权限

    内部类

    成员内部类

    访问

    匿名内部类

    使用方法:


    final

     

    代表不可修改的内容

    修饰对象:

    类:不可被继承。

    方法:不可重写。

    变量:不可修改。

    1、局部变量

    只能被赋值一次

    两种情况下的判断正误:

    final int c = 0; for (int i = 0; i < 10; i++) { c = i; System.out.println(c); } for (int i = 0; i < 10; i++) { final int c = i; System.out.println(c); }

    第一种写法会报错,而第二种相当于每次循环重新申明一个新变量。

    2、局部变量之引用类型

    被final修饰后,只能指向一个对象,地址不能更改,但不影响内部成员变量的赋值

    public class FinalDemo2 { public static void main(String[] args) { // 创建 User 对象 final User u = new User(); // 创建 另一个 User对象 u = new User(); // 报错,指向了新的对象,地址值改变。 // 调用setName方法 u.setName("张三"); // 可以修改 } }

    3、成员变量

    成员变量的初始化。有两种方式。

    注意:被final修饰的变量,通常大写。

    public class User { final String USERNAME = "张三"; private int age; } public class User { final String USERNAME ; private int age; public User(String username, int age) { this.USERNAME = username; this.age = age; } }

    权限

    内部类

    一个类定义在另一个类中

    成员内部类

    定义在类中方法外的类

    在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 Car 中包含发动机 Engine ,这时, Engine 就可以使用内部类来描述,定义在成员位置。 class Car { //外部类 class Engine { //内部类 } }

    访问

    内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员,必须要建立内部类的对象。 public class Person { private boolean live = true; class Heart { public void jump() { // 直接访问外部类成员 if (live) { System.out.println("心脏在跳动"); } else { System.out.println("心脏不跳了"); } } } public boolean isLive() { return live; } public void setLive(boolean live) { this.live = live; } }

    注:

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

    匿名内部类

    是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象 开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作, 1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法 我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快 捷方式。

    使用方法:

    public abstract class FlyAble{ public abstract void fly(); } 使用方法1: 使用方法2: 使用方法3:  
    Processed: 0.009, SQL: 8