基础知识
1.抽象类
- 抽象类里面可以有普通方法。
- 抽象类不能直接new,必须有一个子类来继承抽象父类。
- 继承了抽象类的子类必须重写所有的抽象方法。
public abstract class TestAbstract { public abstract void method() ; public void normalMethod() { } }
抽象类中可以有构造方法,供子类创建对象时,初始化父类成员使用。(当然如果没有,则一般也有一个隐藏的无参构造方法)
继承中的子类的构造方法如果没有显示调用父类的构造方法,那么第一行都会默认执行super()
//父类
public abstract class Super { public Super() { System.out.println("This is the constractor method in Super"); } public abstract void method() ; public void normalMethod() { System.out.println("This is the method in Super!"); } }
//子类
public class Sub extends Super{ @Override public void method() { System.out.println("This is override method in Sub"); } }
public class Test { public static void main(String[] args) { Sub sub = new Sub();//这里虽然子类里面没有明显的构造方法,但是其实是有一个隐藏的无参构造(而且这个构造函数的第一行默认调用了super()父类的无参构造) sub.method(); sub.normalMethod(); } }
This is the constractor method in Super
This is override method in Sub
This is the method in Super!
2.接口

常量:

抽象方法:

默认方法:

public interface TestInterface { void method(); default void normalMethod() { System.out.println("This is the default method!"); } }

静态方法:

public interface TestInterface { void method(); static void staticMethod() { System.out.println("this is a static method in interface"); } }

私有方法:



注意事项:(接口可以实现多继承)

多态:

Super sup = new Sub(); sup.method();//这个是子类重写的法,可以调用。并且执行是子类的内容 sup.superMethod();//这个是父类中特有的方法,可以调用 sup.subMethod();//这个会直接报错,因为父类中没有这个方法
向上向下转型:

Final:(Final 和abstract 不能同时使用)

public class TestFinal { public final String name; public TestFinal() { name ="test"; }//如果这个空构造方法没有写的话,也是可以的 public TestFinal(String name) { this.name = name; } }
访问权限:


浙公网安备 33010602011771号