Abstract是Java中的一个重要关键字,可以用来修饰一个类或者一个方法。修饰一个方法时,表示该方法只有特征签名(signature),没有具体实现,而是把具体实现留给继承该类的子类。一个类中只要有一个abstract方法,那么这个类就要被声明为abstract,但是其中可以有非 abstract方法。
abstract类可以使得类的设计者能够创建方法的原型,而真正的实现留给使用这个类的人。
继承一个abstract类的子类,要么实现父类的所有abstract方法,要么也声明为abstract类,这时仍然可以保留一些abstract方法,把具体实现留给下一级的子类。
abstract类和接口一样,不能创建它们的实例.一个抽象类即使有公共的构造函数,也无法通过new直接创建实例.因为既然它是抽象类,就至少有一个抽象方法,因此必须创建该抽象类的一个子类(通常为内部匿名类)实现其中的抽象方法 。
范例1:
abstract class shape
{
String color;
public void setcolor(String scolor)
{
color=scolor;
}
abstract void show();
}
class rectangle extends shape
{
int w,h;
public rectangle(int w1,int h1)
{
w=w1;
h=h1;
}
public void show()
{
System.out.println("color="+color);
System.out.println("area="+w*h);
}
}
public class abstractc
{
public static void main(String args[])
{
rectangle myrectangle=new rectangle(5,10);
myrectangle.setcolor("red");
myrectangle.show();
}
}
范例2:
abstract class shape
{
String color;
public void setcolor(String scolor)
{
color=scolor;
}
abstract void show();
}
class rectangle extends shape
{
int w,h;
public rectangle(int w1,int h1)
{
w=w1;
h=h1;
}
public void show()
{
System.out.println("color="+color);
System.out.println("area="+w*h);
}
}
public class abstractc
{
public static void main(String args[])
{
shape shape1=new rectangle(5,10);
shape1.setcolor("red");
shape1.show();
}
}
范例3:
abstract class shape
{
String color;
public void setcolor(String scolor)
{
color=scolor;
}
abstract void show();
}
class rectangle extends shape
{
int w,h;
public rectangle(int w1,int h1)
{
w=w1;
h=h1;
}
public void show()
{
System.out.println("color="+color);
System.out.println("area="+w*h);
}
}
public class abstractc
{
public static void main(String args[])
{
shape myshape[];
myshape=new shape[2];
myshape[0]=new rectangle(5,10);
myshape[0].setcolor("red");
myshape[0].show();
myshape[1]=new rectangle(5,10);
myshape[1].setcolor("white");
myshape[1].show();
}
}