您的位置:首页 > 其它

抽象类

2015-07-09 19:33 344 查看

抽象类

抽象方法和抽象类必须使用abstract修饰符来修饰,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法。

利用抽象类和抽象方法,我们可以更好地发挥多态的优势,让我们的程序更加灵活。

抽象类使用注意事项

抽象类必须使用abstract修饰符修饰,抽象方法也必须使用abstract修饰符修饰,抽象方法不能有方法体。

抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。

抽象类的构造器不能用于创建实例,主要是用于被子类调用。

含有抽象方法的类只能被定义为抽象类。

抽象类允许包含抽象成员,但不是必须的;抽象类可以有非抽象方法

抽象类不能同时又是final的。

如果一个非抽象类从抽象类中派生,则其必须通过覆盖来实现所有继承而来的抽象成员

抽象类可以被抽象类继承,结果仍为抽象类。

抽象类允许被声明

代码演示

package abstractTest;

abstract class Vehicle {
public int wheels;
public float weight;

public abstract void Logo();

public Vehicle(int w, float g) {
this.wheels = w;
this.weight = g;
}

public void Speak() {
System.out.println("the w vehicle is speaking");
}
}

class Car extends Vehicle {

int passengers;

public Car(int p, int w, float g) {
super(w, g);
this.passengers = p;
}

@Override
public void Logo() {
// TODO Auto-generated method stub
System.out.println("\n car");
}

public void Speak() {
System.out.println("The car is speaking:Di-di");
}
}

class Truck extends Vehicle {
int passengers;
float load;

public Truck(int p, float l, int w, float g) {
super(w, g);
this.passengers = p;
this.load = l;
}

@Override
public void Logo() {
// TODO Auto-generated method stub
System.out.println("\n Truck");
}

public void Speak() {
System.out.println("The car is speaking:Ba-ba");
}
}

public class VehicleMainTest {
public static void main(String[] args) {
Vehicle v;
Car car = new Car(1, 2, 3);
Truck truck = new Truck(3, 4, 5, 6);
car.Logo();
truck.Speak();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  abstract 抽象类