一 抽象类
1.抽象类:在类和方法中加上关键字abstract,在Java中一个没有方法体的方法被定义为抽象方法,如果一个类中有抽象方法,那么这个类必须定义为抽象类。
2.抽象方法一定在抽象类中;
3.抽象方法和抽象类均可由abstract关键词修饰。
4.抽象类中的方法要使用,必须由子类复写父类中的抽象方法。建立子类调用。其中如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类;
5.抽象类中的抽象方法只有方法声明,没有代码的实现的空方法。普通方法必须有方法体。如下图所示:
6.抽象类使用的时候,一定要有子类,可以有构造函数;final关键词和abstract关键词不可被同时使用。抽象方法不可被final关键词修饰。如下图所示
二 接口
1.接口是一个特殊的抽象类;当抽象类中的方法都是抽象的,那么该类可以通过接口的形式表示。
也就是说接口中的方法都是抽象的且是public的。
2.接口不可以创建对象,因为有抽象方法,需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化。否则子类是一个抽象类。
3.接口中的常量: public static final ;接口中的方法:public abstract xx();
接口中的成员都是public的,且方法是 public abstract的。
4.当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。
5.一个类可以实现多个接口,在类体重可以使用接口来定义常量,而且必须是实现接口中定义的所有的方法。
6.类可以继承一个类,同时可以实现多个接口。在类的声明中用implements关键词表示一个类使用某个接口,在类体中可以使用接口中定义的常量,而且必须实现接口中的所有的方法。
如:
注意:如果要访问父类中的构造函数,可以手动通过super语句来指定。
三 接口与抽象类代码
3.1.抽象类
1.定义抽象类 public abstract class A { public abstract void sya(); } 2.实现类 public class B extends A { @Override public void sya() { System.out.println("hello chouxianglei"); } }
3.调用:
public class T { public static void main(String[] args) { A a=new B(); a.sya(); } }
4.显示结果:
3.2.接口
1.定义接口
public interface AI { public abstract void say(); }
2.定义实现类
public class BI implements AI { @Override public void say() { System.out.println("hello woshi JIEKOU"); } }
3.调用
public class T { public static void main(String[] args) { AI ai=new BI(); ai.say(); } }
4.结果