抽象类
抽象类:用关键词abstract修饰的类为抽象类
抽象类是对具体类的高度概括
例如一个抽象概念"水果",而具体概念就是"香蕉","苹果","菠萝","桃子"等等;
"动物"就是抽象概念,"猫","狗","猴子","大象"就是具体的实现类
我们将各种动物共有的特征和行为放在"动物"这个抽象类中,在"猫","狗"这些实现类中继承"动物"这个抽象类,并实现了其中的抽象行为方法,在具体类中具体实现,从而达到简化代码,增加耦合性的特点。
• 抽象方法即:由abstract修饰,只提供方法声明而不提供方法实现;
• 抽象类中可以有抽象方法也可以没有抽象方法;
• 抽象类不能创建实例;必须通过子类继承并实现其全部抽象方法后方可创建实例;
• 抽象方法的子类如果没有重写父类的抽象方法,那么该子类就必须声明为抽象类
student抽象类
The abstract method hobby in type Student can only set a visibility modifier, one of public or protected
抽象类中的抽象方法只能用public或 protected来修饰
package inheritanceDemo;
public abstract class Student {
String name;
int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
//普通方法
public void show(){
System.out.println("His name is "+name+",age is "+age);
}
private void play(){
System.out.println("He like play basketball");
}
//抽象方法,只声明,无方法体
public abstract void score();
protected abstract void hobby();
}
子类UnderGraduate继承Student类,并重写他的抽象方法
package inheritanceDemo;
public class UnderGraduate extends Student{
String degree;
public UnderGraduate(String name,int age,String degree){
super(name,age);
this.degree=degree;
}
@Override
public void show() {
// TODO Auto-generated method stub
super.show();
System.out.println("His name is "+name+",age is "+age+", degree is "+degree);
}
@Override
public void score() {
// 方法体
}
@Override
protected void hobby() {
// 方法体
}
}
抽象类同一般类的区别:
抽象方法没有方法体,只能在子类中具体实现,而一般类中的方法有方法体,子类既可以有自己独特的方法,又可以调用父类的方法。
抽象类没有实例对象,只能实例化他的非抽象子类,一般类可以实例化。
(本人为菜鸟,均为自己总结,若有问题,望指出,谢谢!)