public abstract class Tr { //创建抽象类Tr
abstract void distance(); //创建抽象方法distance()
public static void main(String[] args) {
Car QQ=new Car(); //创建属于类Car的对象QQ,并设置和显示对象的相关信息
QQ.getInfo("奇瑞",80,1.5f);
QQ.distance();
Train G=new Train(); //创建属于类Train的对象G,并设置和显示对象的相关信息
G.getInfo("G7023",380,1.5f);
G.distance();
}
}
class Car extends Tr{ //创建继承与父类Tr(抽象类)的子类Car
String type; //定义子类Car的成员变量
float time;
int speed;
float s;
void getInfo(String type,int speed,float time){ //定义子类Car的成员方法getInfo(),获取汽车的相关信息
this.type=type;
this.time=time;
this.speed=speed;
}
void distance(){ //覆盖(修改)抽象方法distance(),计算行程
s=speed*time;
System.out.println("汽车的型号:"+type);
System.out.println("汽车的时速:"+speed+"千米/小时行驶了"+time+"小时,行驶的路程:"+s+"千米");
}
}
class Train extends Tr{ //创建继承与父类Tr(抽象类)的子类Train
String number; //定义子类Train的成员变量
float time;
int speed;
float s;
void getInfo(String number,int speed,float time){ //定义子类Train的成员方法getInfo(),获取汽车的相关信息
this.number=number;
this.time=time;
this.speed=speed;
}
void distance(){ //覆盖(修改)抽象方法distance(),计算行程
s=speed*time;
System.out.println("汽车的型号:"+number);
System.out.println("火车的时速:"+speed+"千米/小时行驶了"+time+"小时,行驶的路程:"+s+"千米");
}
abstract void distance(); //创建抽象方法distance()
public static void main(String[] args) {
Car QQ=new Car(); //创建属于类Car的对象QQ,并设置和显示对象的相关信息
QQ.getInfo("奇瑞",80,1.5f);
QQ.distance();
Train G=new Train(); //创建属于类Train的对象G,并设置和显示对象的相关信息
G.getInfo("G7023",380,1.5f);
G.distance();
}
}
class Car extends Tr{ //创建继承与父类Tr(抽象类)的子类Car
String type; //定义子类Car的成员变量
float time;
int speed;
float s;
void getInfo(String type,int speed,float time){ //定义子类Car的成员方法getInfo(),获取汽车的相关信息
this.type=type;
this.time=time;
this.speed=speed;
}
void distance(){ //覆盖(修改)抽象方法distance(),计算行程
s=speed*time;
System.out.println("汽车的型号:"+type);
System.out.println("汽车的时速:"+speed+"千米/小时行驶了"+time+"小时,行驶的路程:"+s+"千米");
}
}
class Train extends Tr{ //创建继承与父类Tr(抽象类)的子类Train
String number; //定义子类Train的成员变量
float time;
int speed;
float s;
void getInfo(String number,int speed,float time){ //定义子类Train的成员方法getInfo(),获取汽车的相关信息
this.number=number;
this.time=time;
this.speed=speed;
}
void distance(){ //覆盖(修改)抽象方法distance(),计算行程
s=speed*time;
System.out.println("汽车的型号:"+number);
System.out.println("火车的时速:"+speed+"千米/小时行驶了"+time+"小时,行驶的路程:"+s+"千米");
}
}
知识点:1、抽象类:在java中用关键字abstract修饰抽象类。
2、抽象方法:java中用关键字abstract修饰的方法。
3、多态性:是由继承而产生的结果,因此继承是多态的前提。多态性实现了在继承过程中不同的类中可以有相同的方法名,即“一个名字,多种形式”。
心得体会:继承和多态是java面向对象程序设计的重要特点,也是java程序代码复用性的一种有效手段。由于抽象类是对一组具体实现的抽象性描述,所以通常抽象类不能被实例化,只能用来派生子类。