二十、java的抽象类
来源:互联网 发布:手机淘宝咋用微信支付 编辑:程序博客网 时间:2024/05/22 17:03
现实世界中,人们表征世界时,会把现实世界中的很多类具有相同特征的事物归为一个抽象类。比如水果是许多植物果实的总称,我们可以定义一个苹果类、定义一个西瓜类,可以实例化一个苹果对象,可以实例化一个西瓜对象,我们也可以定义一个水果类,但是你无法实例化一个水果对象,因为水果的实例必定是某个具体的植物果实,这时候,水果类就是一个抽象类,水果类可以被苹果类继承扩展,可以被西瓜类继承扩展,这是水果类的唯一用途。
又比如,如果进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
抽象类的定义形式:
一般格式如下:
abstract class 类名{
类体
}
说明:
l 抽象类是不能直接实例化对象的类。也即抽象类不能使用new运算符去创建对象。
l 抽象类一般包括一个或几个抽象方法。所谓抽象方法需在abstract修饰符进行修饰,抽象方法只有方法的声明部分,没有具体的方法实现部分。抽象类的子类必须重写父类的抽象方法,才能实例子化,否则子类也是一个抽象类。
l 抽象类中不一定包含抽象方法,但是包含抽象方法的类必须说明为抽象类。
举例:Dog类继承于抽象类Animal。
abstract class Animal{
String name;
Animal(Stringname){ //非抽象方法
this.name=name;
}
void getname(){ //非抽象方法
System.out.println("Animal's name is"+name);
}
abstract void move(); // 抽象方法,用abstract 修饰
}
class Dog extends Animal{
intage;
Dog(String name,int age){
super(name);
this.age=age;
}
void move(){
System.out.println("Dog is running!");
}
void getage(){
System.out.println("Dog is"+age+" years old");
}
}
Public class AbstractDemo{
public static void main(String args[]){
Dogd=new Dog("wangwang",5);
d.move();
d.getname();
d.getage();
}
}
程序运行结果:
Dog is running!
Animal's name is wangwang
Dog is 5 years old
举例二、具有启动(startUp)方法的抽象车辆类Car,其每种具体子类都必须实现其自己的、专属于某种类型车辆的具体启动(startUp)方法
//定义抽象类Car
abstractclass Car {
//定义抽象方法startUp
publicabstract void startUp();
}
//定义抽象类Audi并使该类继承自Car
abstractclass Audi extends Car{
//定义抽象方法turbo
publicabstract void turbo();
}
//定义非抽象类Audi_A6继承自Audi
class Audi_A6extends Audi{
//实现startUp方法
publicvoid startUp() {
System.out.println("调用了奥迪A6的启动功能!!!");
}
//实现turbo方法
publicvoid turbo() {
System.out.println("调用了奥迪A6的加速功能!!!");
}
}
//定义非抽象类Audi_A8继承自Audi
class Audi_A8extends Audi{
//实现startUp方法
publicvoid startUp(){
System.out.println("调用了奥迪A8的启动功能!!!");
}
//实现turbo方法
publicvoid turbo(){
System.out.println("调用了奥迪A8的加速功能!!!");
}
}
publicclass AbstractClassDemo{
publicstatic void main(String[] args) {
//创建Audi_A6对象并使该类引用a6指向该对象
Audi_A6 a6=new Audi_A6();
//调用Audi_A6对象中的方法
a6.startUp();
a6.turbo();
//创建Audi_A8对象并使该类引用a8指向该对象
Audi_A8 a8=new Audi_A8();
//调用Audi_A8对象中的方法
a8.startUp();
a8.turbo();
}
}
程序执行结果:
调用了奥迪A6的启动功能!!!
调用了奥迪A6的加速功能!!!
调用了奥迪A8的启动功能!!!
调用了奥迪A8的加速功能!!!
- 二十、java的抽象类
- (二十)、抽象类
- java复习二:抽象类和抽象方法的概述
- 二十七、继承(十)抽象的物件类型
- JAVA第三周抽象类的学习练习实验二
- 54 Java 抽象类和抽象方法 (二)
- java讲义经验之谈(二)抽象类与抽象方法
- Java的抽象类
- Java 的抽象类
- Java的抽象类
- java面向对象二:抽象类、接口
- java笔记--day09--抽象类(二)
- java(二)-抽象类接口
- java 基础知识二(抽象类‘、接口)
- Java的抽象类与抽象方法
- java的抽象类和抽象方法
- Java的抽象类和抽象方法
- JAVA的抽象类和抽象方法
- Google 推出的 web 输入法工具 Google input tools
- ASP.Net Cookie(几个不同出处)
- 如何在Android模拟器上安装和卸载APK程序包
- 比较两个数a、b的大小,不能使用大于/小于、if、switch,?:等判断语句
- PHP5中PDO的简单使用
- 二十、java的抽象类
- Struts2 REST 小记
- 8道经典逻辑推理题(附带答案)
- 二十一、详细解析Java中抽象类和接口的区别
- 在ios中使用soundtouch库实现变声 2011-08-16 11:36:56
- asp.net 操作excel时报0x800A03EC总结
- SQl之管理视图
- 远程桌面使用本地打印机
- JS截取字符串