关键字final
-
final 最终的 终结者
-
final关键字 修饰class ,成员变量,方法,局部变量(形参)
-
final修饰类,final类不能有子类
-
final修饰成员变量 ,成员变量的值一旦被赋值不可更改,赋值只能有一次;
-
final修饰方法,此方法不能被重写
-
final修饰局部变量 局部变量只能赋值一次;
//final类不能被继承 public class Father { //1,直接赋值等号赋值 常量命名 全大写多个单词使用下划线隔开 AGE_TYPE public static final int AGE = 10; //2,构造器中赋值 public final int id; private String name; public Father() { this.id = 12; } public Father(int id, String name) { this.id = id; this.name = name; } public final void study() { System.out.println("===="); } public void read(final String bookName) { final int num = 10; // bookName = "红楼梦"; } public int getId() { return id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
接口
-
接口的出现弥补 了 Java只支持单继承;interface
-
Java只支持单继承
-
接口可以认为是非常特殊的 抽象类
-
类型 { } 所有的成员变量默认使用 public static final修饰,都是常量
-
不能定义构造器
-
所有的方法 默认都是 public abstract修饰的方法,接口 中的方法都是抽象方法
-
-
类与接口之间是实现的关系 而且可以是多实现 实现类实现接口;
-
优先使用接口类型,更加灵活;能用实现的时候不用继承
-
接口与接口之间是继承的关系 而且可以多继承
1,接口的定义
//定义接口 public interface Animal { //成员变量默认也是使用 public static final 的常量 int AGE = 10; //方法 public abstract 抽象方法 void play(); }
2,类与接口的关系
//类与接口之间 是实现的关系 (和继承非常类似) //实现类Monkey 去实现 接口Animal public class Monkey implements Animal { @Override public void play() { System.out.println("猴子表演骑单车"); } }
3,多实现
//一个类实现多个接口 public class InterImpl implements Inter1, Inter2 { @Override public void method1() { } @Override public void method2() { } }
测试代码
public static void main(String[] args) { //向上转型 Inter1 inter1 = new InterImpl(); Inter2 inter2 = new InterImpl(); Object o = new InterImpl(); }
4,接口与接口之间,可以是多继承
public interface Inter3 extends Inter1, Inter2 { void method3(); }
5,继承又实现
public class Son extends Father implements Inter1 { }
测试类
public static void main(String[] args) { Father f = new Son(); Inter1 f2 = new Son(); }
6,接口新特性
public interface Inter { void method1(); //1 普通的方法 default void method2() { method3(); System.out.println("method2 invoked======= "); } //2 私有的普通方法 private void method3() { System.out.println("私有的普通方法"); } //3 public static void method4() { method5(); System.out.println("静态的public方法"); } private static void method5() { System.out.println("静态的private方法 "); } }