1

final是属于修饰类
在类里面添加final不能被继承
修饰类

flnal class 类名 {

}

举例:

final class a {
}

在方法里添加final不能被重写
修饰方法

修饰符 final 返回值类型 方法名(参数列表){
//方法体
}

举例:

public final String b(int a){
a = 1;
}

在变量里添加final不能被重新赋值
修饰变量
举例:

final int a;
a = 10;
a = 15;//报错,不可重新赋值
final int b = 10;
b = 15;//报错,不可重新赋值

不同权限的访问能力
public protected default(空的) private 在同类中的访问能力是可以的

public protected default(空的)在同一包中是可以

public protected 在不同包子类是可以

public 在不同包中的无关类是可以

成员内部类
定义格式:

class A{
  class B{
  }
}

创建内部类对象格式:

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

演示:
(定义类)

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;
  }
}

(测试类)

public class InnerDemo {
  public static void main(String[] args) {
    // 创建外部类对象
    Person p = new Person();
    // 创建内部类对象
    Heart heart = p.new Heart();
    // 调用内部类方法
    heart.jump();
    // 调用外部类方法
    p.setLive(false);
    // 调用内部类方法
    heart.jump();
  }
}

输出结果:
心脏在跳动
心脏不跳了
匿名内部类
格式:

new 父类名或者接口名(){
  //方法重名
  @Override
  public void method(){
    //执行语句
  }
};

举例:
(定义接口)

public abstract class a{
    public abstract void fly();
}

创建匿名内部类,并调用:

public class InnerDemo {
  public static void main(String[] args) {
    /*
    1.等号右边:是匿名内部类,定义并创建该接口的子类对象
    2.等号左边:是多态赋值,接口类型引用指向子类对象
    */
    FlyAble f = new FlyAble(){
      public void fly() {
        System.out.println("陈丽好吃屁");
      }
    };
    //调用 fly方法,执行重写后的方法
    f.fly();
  }
}

MAYZHMH
1 声望2 粉丝