写在前面———本篇主要讨论的是Java中的抽象类和接口技术
1.抽象类
1)概念
通常在编程语句中用 abstract 修饰的类是抽象类,而使用这个关键字定义的方法也称为抽象方法。抽象方法没有方法体,本身没有任何意义,除非被重写。所以承载这个方法的类必须被继承。实际上,抽象类除了被继承以外毫无意义。另外以抽象方法的角度出发,只要类中有一个抽象方法,此类就被标记为抽象类。定义一个抽象类的伪代码如下:
public abstract class Parent{
abstract void method();
}
2).设计原则
1.抽象类是用来继承的,尽量避免从具体类继承
2.抽象类应该拥有尽可能多的共同代码,以提高代码的复用率
2.接口
1)概念
接口是抽象类的延伸,可以看作是纯粹的抽象类,同样的,接口中所有方法都没有方法体。接口使用interface关键字进行定义,具体语法如下:
public interface father{
void show();
}
同时对于一个类而言,可以同时继承一个类和接口:
public interface ifather{
void show();
}
class father{}
class son extends father implements ifather{}
此外,继承接口时,可以多重继承:
interface father{}
interface father1{}
interface father2{}
class son implements father,father1,father2{}
一个接口也可以继承另一个接口:
interface father{}
interface father1 extends father{}
2)实例分析
下面通过一个实例分析普通类的继承和接口的继承间的异同:
package project;
public class iproject {
public static void main(String[] args) {
Quadrilateral q1=new Quadrilateral();
isquare i1=new isquare();
iisquare ii1=new iisquare();
q1.iShow();//
i1.iShow();//纯类继承
ii1.show();//纯接口继承
}
}
interface painting{
public void show();
}
class Quadrilateral{
public void iShow()
{
System.out.println("this is the Quadrilateral method");
}
}
class isquare extends Quadrilateral{}
class iisquare implements painting{
public void show()
{
System.out.println("draw a iisquare");
}
}
3.接口与抽象类异同
1.一个类只能使用一次继承关系,一个类却可以实现多个接口继承
2.一般情况下,优先考虑接口,其次考虑抽象类
3.抽象类中可以用非抽象类方法,而接口中不能有方法实现