抽象类和接口
1. 抽象类
在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。
在Java语言中设置抽象类不可以实例化对象。
抽象类的语法如下:
public abstract class Test{
abstract void testAbstract(); //定义抽象方法
}
使用abstract关键字定义的类称为抽象类,而使用这个关键字定义的方法称为抽象方法。抽象方法没有方法体,这个方法没有任何意义,除非它被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承之外没有任何意义。
抽象类使用实例:
Animal类
package abstra;
public abstract class Animal {
public abstract void eat();
//抽象类中可以包含成员变量和成员常量,和成员方法(包括抽象方法、非抽象方法、构造方法等)
}
Cat类
package abstra;
public class Cat extends Animal{
public void eat()
{
System.out.println("Cat");
}
}
AnimalDemo类
package abstra;
public class AnimalDemo {
public static void main(String[] args) {
Animal a=new Cat();
a.eat(); //调用Cat中重写的eat方法。
}
}
2.接口
接口简介:接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。接口使用interface关键字进行定义,其语法如下:
public interface drawTest{
void draw(); //接口内的方法,省略abstract关键字
}
一个类实现一个接口可以使用implements关键字,代码如下:
public class Parallelogram extends Quadrangle implements drawTest{
...//
}
PS:在接口中定义的方法必须被定义为public或abstract形式,其他修饰权限不被Java编译器认可,即使不将该方法声明为public形式,也是public.
在接口中定义的任何字段都自动是static和final的。
实例:
interface drawTest //定义了一个接口drawTest()
{
public void draw();
}
//定义平行四边形类,继承四边形类,并实现drawTest接口
class ParallelogramgleUseInterface extends QuadrangleUseInterface implements drawTest{
public void draw()
{
System.out.println("平行四边形");
}
void doAnyThing()
{
//语句块
}
}
//正方形类,继承四边形,实现drawTest接口
class SquareUseInterface extends QuadrangleUseInterface implements drawTest{
public void draw()
{
System.out.println("正方形");
}
void doAnyThing(){
//语句块
}
}
public class QuadrangleUseInterface {
void doAnyThing()
{
//some sentence
}
public static void main(String[] args) {
drawTest[] d={new SquareUseInterface(),new ParallelogramgleUseInterface()};
for (int i=0;i< d.length;i++){
d[i].draw();
}
}
}
/*
正方形
平行四边形
*/

浙公网安备 33010602011771号