把抽象类和接口放在一起整理,是因为感觉它们有很多相像的东西,不过并不能说他们一样。(接口不是类,和类是两种概念。类描述对象的属性和方法。接口则包含类要实现的方法。)可以把接口理解成一种更加抽象的抽象类。
在面向对象过程中,所有的对象都是通过类来描述的。如果一个类没足够的信息来描述对象,这个就是抽象类。
在Java中使用abstract关键字来修饰的类叫抽象类,修饰的方法叫做抽象方法。
//抽象类
abstract class AbsTest{
String name;
public AbsTest(){}
//抽象方法
public abstract void print();
public void test(){}
}
如果想设计一个类,里面一个成员方法只是声明,让子类来具体实现,那么就可以用abstract来修饰。(注意:类中只要有一个方法是抽象方法,那么这个类必须是抽象类)
综上所述,我们了解了什么是抽象类及基本概念。那么抽象类不能实例化,那又有什么意义呢?可以用什么方法实例化?
单纯的抽象类的意义就是防止外界创建对象,我们可以通过子类继承抽象类,来实例化子类。(利用多态来实例化抽象类中的抽象方法)
abstract class AbsTest{
String name;
public AbsTest(){}
public abstract void print();
public void test(){}
}
//继承抽象类
class Son extends AbsTest{
//重写抽象方法
public void print(){
System.out.println("我是子类");
}
}
前言已经说过,接口并不是类,那它是什么呢?
接口可以看作是一种标准,一种规范。
接口的声明:
[访问修饰符] interface 接口名 [extends 其他接口]{...}
interface ITest{
//常量(一般不用)
String NAME = null;
//抽象方法(隐式抽象,不用加abstract)
public void print();
}
接口的实现:
格式:
[访问修饰符] class 实现类名 implements 接口名[其他接口,...]{...}
//接口
interface ITest{
String NAME = null;
public void print();
}
//实现类
class Realize implements ITest{
//实现抽象方法
public void print(){};
}
在实现接口时的一些规则:
一个接口能继承另一个接口,这和类之间的继承比较相似。
public interface Hockey extends Sports, Event
最后总结一下抽象类和接口的区别吧。
以上
原文:https://www.cnblogs.com/fzxey/p/10753029.html