注意:abstract关键字和final关键字不能同时使用
public abstract class H {
//抽象方法没有方法体必须被继承
public abstract void method();
}
1.final修饰类
- fina类不能被继承
- final类的方法不能继承重写
- final类修饰的方法都被隐式指定为final方法
-
public final class H { public final void method(){ }; }
2.final修饰局部方法
- final方法不能被重写
-
public class finalParent { private final void a(){ System.out.println("private final"); } final void b(){ System.out.println("final"); } public void c(){ System.out.println("public"); } }
3.final修饰变量
- 对于基本类型来说,类型不可变,final修饰的变量只能赋值一次
-
public final class H { public final void method(){ final String name ="hah"; name="xixi";//不能重新赋值 }; }
- 对于引用类型来说,地址值不可变,
-
public class H { private String name ="hah"; public H(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
public final class A{ public static void main(String[] args) { H h =new H(""); H a =new H("");//两个地址对象 H s =new H(""); s.setName(""); } }
4,final修饰成员变量
- 直接赋值
-
public class H { private final static String a=""; }
- 构造方法赋值,类中的所有构造方法都对成员变量进行赋值,两者二选一
-
public class H { public H(final String a) { } }
public final class A{ public static void main(String[] args) { H h =new H("哈哈"); } }