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();
}
}
java中abstract的用法
abstract(抽象)修饰符,可以修饰类和方法
1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。
2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。
注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。
abstract修饰符在修饰类时必须放在类名前。
abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。
注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。
举个简单的例子下面有一个抽象类
abstract class E{
public abstract void show();//public abstract 可以省略
}
然后其它类如果继承它通常为了实现它里面的方法
class F extends E{
void show(){
//写具体实现的代码
}
}
最后再主方法里面定义一个父类引用指向子类对象,就会发生多态现象,比如
E e=new F();
e.show();
实际调用了子类里面的show()方法
分享到:
相关推荐
Java中abstract抽象类
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别
抽象类和接口的区别 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持...
结论:abstract class和Interface是JAVA语言中的两种定义抽象类的方式。Interface将abstract的概念作了更进一步的发挥。你可以想像Interface是“纯粹”的 abstract class,只可以包含抽象方法,也包括一些常量的定义...
1.继承及继承实例 2.方法重写(Overwrite) 3.super关键字 4.方法重载(Overload) 5.final修饰符 6.abstract修饰符 7.抽象类 8.接口 9.接口和抽象类对比 10.接口和抽象类使用场合实例 11.总结
主要介绍了JAVA抽象类和抽象方法(abstract),结合实例形式分析了java抽象类及抽象方法相关定义、使用技巧与操作注意事项,需要的朋友可以参考下
Java中抽象类是指用abstract关键字修饰的类,它不能被实例化,只能被继承。抽象类通常用于定义一些公共的方法和属性,但是这些方法没有具体的实现。子类必须重写抽象类中的所有抽象方法才能被实例化。 抽象类是Java...
JAVA抽象类课件,JAVA抽象类做为一个单独的知识点进行讲解,内容丰富,项目教学,适合学习。使用了关键词abstract声明的类叫作"抽象类"。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。...
在最近的java学习中,写了一些小例子,都是一些常用知识,上传希望大家下载,共同学习。
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。
Abstractclass和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
java中的抽象类和接口的理解及abstract的使用方法!
抽象类和接口实验报告
在Java中用abstract修饰的类是抽象类,用abstract修饰的类的方法是抽象方法,抽象类和抽象方法用法总结如下。 1.abstract可以修饰class表示抽象类,可以修饰方法表示抽象方法,但是不能修饰成员变量,也是没有...
circle Rectangle等类在接口中计抽象类中的用法 抽象类 接口多态 public class Polymorphism { public static void main(String args[]) { Triangle t=new Triangle(5.0,2.0); t.show_area(); Rectangle r=...