【2018-03-26 18:54:48】
抽象方法:
抽象方法的注意事项:必须声明在抽象类中,抽象方法没有方法体,只有方法的声明,需要用abstract关键字进行修饰。示例如下:
abstract void xxx();
public abstract class Vehicle { //行驶 public abstract void run(); }
其次,抽象类中是可以声明普通方法的,例如:
public abstract class Vehicle { //行驶的行为 public abstract void run(); //抽象类中可以声明普通方法 public void msg(){ System.out.println("这是父类"); } }
声明抽象方法,就是为了让子类重写,并且抽象类不能够实例化,例如:
Demo.java
public abstract class Demo { abstract void run(); }
Demo2.java public class Demo2 extends Demo { @Override void run() { } }
当Demo2继承Demo抽象类时,Demo2会自动重写父类Demo的run()方法。
另外,创建抽象类的对象,直接重写了抽象方法,抽象类是不能够直接创建对象的。
在计算薪水的方法的小Demo中,首先创建了员工Staff抽象类,并且类中有计算薪水的方法:pay(),在普通员工类、经理类、销售类继承了抽象类并重写了的pay()方法,在测试类中,抽象父类指向子类的对象,这也是多态的一种体现。
接口:
首先,接口不可以实例化,接口下可以声明属性。接口中的方法都是public abstract方法,没有方法体。实现类必须实现接口的所有方法,接口中的变量都是静态常量。
接口指向实现类的对象,也是多态的一种体现。示例:
Demo.java public interface Demo { void face(); }
public class Demo2 implements Demo { @Override public void face() { } }
在以上的示例中,Demo2.java为Demo.java接口的实现类。声明接口时,使用interface进行修饰。在实现类中,使用implements实现接口,并且重写父类的face()方法。
以下为接口的注意事项:
1.接口不能够创建对象
2.接口中的方法都是抽象方法
3.接口中的属性都是静态常量
4.实现类一次可以实现多个接口
5.一个实现类可以继承一个类的同时,实现多个接口,继承extends写在implements前面
6.接口之间可以实现多继承
A.java public interface A { public void a(); public void a1(); }
在A.java中,创建了一个接口,并且有a和a1两个属性。
B.java public interface B extends A { public void b(); public void b1(); }
在B.java中,接口B继承了接口A
D.java public class D implements A, B, C { @Override public void b() { } @Override public void b1() { } @Override public void a() { } @Override public void a1() { } }
在D.java中,同时实现了多个接口。