java抽象类的⼦类必须_JAVA——抽象类⼀、抽象类的概念
包含⼀个抽象⽅法的类就是抽象类,其本质是对多个普通类中相同的部分的抽象。
⼆、抽象类的特点
1.抽象⽅法和抽象类使⽤ abstract 修饰;
2.有⼀个抽象⽅法的类必须是抽象类;
3.抽象类中⼀定有抽象⽅法,反之不成⽴;
4.抽象类不能够实例化 ,即不能创建对象;
5.抽象类的成员⼀般使⽤ public 或者 protected修饰;
6.抽象类的抽象⽅法强制⼦类重写;
7. 抽象类中所有的内容均是⽤来给⼦类使⽤;
三、抽象类与普通类的区别
抽象类和普通类在结构上的区别:抽象类有抽象⽅法,⽽普通类没有。
四、抽象类的⼦类的特点
1 如果⼦类想要继承抽象类,就必须实现抽象类中所有的抽象⽅法;
2 如果⼦类不想实现⽗类的抽象⽅法,那么⼦类必须升级为抽象类。
五、代码演⽰
例:编写⼀个交通⼯具类,具有前进run()功能,其⼦类有⾃⾏车、⼩轿车、地铁,重写⽗类⽅法。
主⼈有属性name,age属性,⽅法回家goHome(交通⼯具),需要使⽤交通⼯具,使⽤抽象类优化程序。
public static void main(String[] args) {
Hoster hoster = new Hoster("张三", 30);
Vehicle v = new Bike(); //使⽤多态创建对象
//创建匿名对象new Car(),并将其作为goHome()⽅法的形式参数
//创建匿名对象new Hoster("李四", 31)并赋值,再调⽤goHome()⽅法
new Hoster("李四", 31).goHome(new Subway());
}
class Hoster {
java类的概念private String name;
private int age;
public Hoster() {
super();
}
public Hoster(String name, int age) {
super();
this.age = age;
}
public void goHome(Vehicle v) {
v.run(this); //将参数传递给此处goHome⽅法,再调⽤this所指向对象 // (谁调⽤的goHome就指向谁)的run()⽅法。}
public String getName() {
return name;
}
public void setName(String name) {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
abstract class Vehicle { //abstract修饰的抽象类
public abstract void run(); //abstract修饰的抽象⽅法
public abstract void run(Hoster hoster); //abstract修饰的抽象⽅法
}
class Bike extends Vehicle {
@Override //run()⽅法重写
public void run() {//实现⽗类中的抽象⽅法
System.out.println("⾃⾏车在跑");
}
@Override//run(Hoster hoster)⽅法重写
public void run(Hoster hoster) {//实现⽗类中的抽象⽅法
System.out.Name() + "骑着⾃⾏车回家"); //执⾏
}
}
class Car extends Vehicle {
@Override//run()⽅法重写
public void run() {//实现⽗类中的抽象⽅法
System.out.println("⼩轿车在跑");
}
@Override//run(Hoster hoster)⽅法重写
public void run(Hoster hoster) {//实现⽗类中的抽象⽅法System.out.Name() + "开着⼩轿车回家");//执⾏}
}
class Subway extends Vehicle {
@Override //run()⽅法重写
public void run() {//实现⽗类中的抽象⽅法
System.out.println("地铁在跑");
}
@Override // run(Hoster hoster)⽅法重写
public void run(Hoster hoster) {//实现⽗类中的抽象⽅法System.out.Name() + "坐着地铁回家");//执⾏}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论