抽象类
为什么会存在抽象类,抽象类的功能是什么?
下面的这段代码定义了一个动物类,动物类中有自己的吃的方法
public class Animal {
//属性:昵称,年龄
private String name;
private int month;
public Animal() {
}
public Animal(String name,int month) {
this.setMonth(month);
this.setName(name);
}
//对应属性的get,set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month=month;
}
//公共的方法:吃东西
public void eat() {
System.out.println("动物都有吃东西的方法");
}
}
下面的代码定义了一个猫类; 猫类中有自己的吃的方法,
public class Cat extends Animal {
//属性,体重
private double weight;
//无参构造
public Cat() {
}
//带参构造
public Cat(String name,int month,double weight) {
super(name, month);
this.weight=weight;
}
//对应属性的get,set方法
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight=weight;
}
//run方法
public void run() {
System.out.println("小猫快乐的奔跑");
}
//重写父类的方法
public void eat() {
System.out.println("猫吃鱼");
}
public void playBall() {
// TODO Auto-generated method stub
System.out.println("小猫玩线球");
}
}
也就是说动物类和猫类都有属于自己的方法。动物有吃的方法,但它去不知道猫类怎么吃。
这种现象总结起来就是:某个父类只知道它的子类含有怎样的方法,但却无法准确的知道这些子类如何实现这些方法。
此时,我们在进行父类对象的实例化就没有意义了。我们可以把父类设置为抽象类,也就是用abstract关键字修饰。
抽象类的特点:
1.不允许直接的实例化对象,可以被继承。
2.可以通过向上转型,使父类引用指向子类对象。
实际应用中适当使用抽象类的好处:
1.通过子类与父类的继承关系限制了子类方法设计的任意性
2.同时也一定程度上限制了无意义父类的实例化