变量:常量 一旦赋值 不可改变
final修饰属性的时候 该属性就没有默认值 就必须手动赋值
方法:final方法不能被子类覆盖
类:final类不能被继承
private 属性 方法 构造方法
(default) 属性 方法 构造方法 类
protected 属性 方法 构造方法
public 属性 方法 构造方法 类
private abstract 不能联用
final abstract 不能联用
static abstract 不能联用
接口:特殊的抽象类
1.属性都是公开静态常量
2.方法都是公开抽象方法
3.没有构造方法
实现接口 implements
一个类实现接口,如果这个类不希望成为抽象类,就必须实现接口中的所有抽象方法
- public class TestInterface {
- public static void main(String[] args) {
- IA a = new Myclass();
- a.m1();
- a.m2();
- }
- }
-
- abstract class ClassA{
- public static final int A = 10;
- public static final double B = 3.8;
- public abstract void m1();
- public abstract void m2();
- public ClassA() {}
- }
- //接口
- interface IA{
- int A = 10;
- double B = 3.8;
- void m1();
- void m2();
- }
- //implements 实现
- class Myclass implements IA{
- public void m1() {};
- public void m2() {};
- }
接口之间可以定义多继承关系
一个类在继承另外一个类的同时 还能实现多个接口
- interface IB{
- void m3();
- }
- interface IC{
- void m4();
- }
- interface ID extends IB,IC{
- void m5();
- }
- abstract class ClassE{
- public abstract void m6();
- }
- class MyClass extends ClassE implements IA,ID{
- public void m1() {}
- public void m2() {}
- public void m3() {}
- public void m4() {}
- public void m5() {}
- public void m6() {}
- }
- main方法里去实例调用 最后访问的都是继承的myclass类
- MyClass mc = new MyClass();
- IA a=mc;
- IB b = mc;
- IC c = mc;
- ID d = mc;
- ClassE e = mc;
- a.m1();
- a.m2();
- b.m3();
- c.m4();
- d.m3();
- d.m4();
- d.m5();
- e.m6();