//理解抽象类:
abstract class Gods{//抽象类名不能被final修饰
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void proTeCt();//抽象方法:一个没有具体实现的方法,被abstract修饰
//private abstract void ha(); //抽象方法不能私有。
//public static abstract void ha(); //抽象方法不能静态
protected abstract void Help();
}
//包含抽象方法的类叫做抽象类。
//抽象类不可以被实例化,所以这个抽象类只能被继承。
//抽象类中也可以包含普通类的其他属性和方法。
//一个普通类继承了抽象类,这个普通类必须重写这个抽象类的所有抽象方法。
class East extends Gods{
@Override
public void proTeCt(){
System.out.println("发大财");//普通类重写父类抽象方法必须变成非抽象方法。
}
//void Help(){
//
//}抽象方法重写时权限只能更加开放
@Override
public void Help(){
System.out.println("健康康");
}
}//抽象类可以多态
abstract class West extends Gods{
public abstract void liSten();//抽象子类可以不重写抽象父类的抽象方法
@Override
public abstract void Help();
}
class Books extends West{//当一个普通类继承了抽象子类,必须重写抽象子类所继承的抽象父类的抽象方法
@Override
public void liSten(){
System.out.println("记录原谅,同时也记录了罪行");
}
@Override
public void proTeCt(){
System.out.println("升华");//普通类重写父类抽象方法必须变成非抽象方法。
}
@Override
public void Help(){
System.out.println("健康康");
}
}
public cass Text{
public static void main(String[] args) {
//理解抽象类:
// Gods gods = new Gods; 抽象类不能直接被实例化
Gods caiShen = new East();//抽象类可以向上转型
caiShen.Help();
}
总结如下:
一、抽象类——类方:
1、抽象类类名不能被final修饰。
2、抽象子类继承抽象父类后可以不重写抽象父类的抽象方法,该抽象子类再次成为一个普通类的父类后,普通类需要重写抽象父类(原抽象子类)和抽象祖父类(原抽象父类)的所有抽象方法。
3、抽象类不能被直接实例化,只能继承。
4、抽象类可以多态。
二、抽象类——方法方:
1、抽象类中可以包含其他普通方法和属性。
2、在抽象父类中,抽象方法不能私有、不能静态、不能final。
3、普通类继承抽象父类后需要重写父类的所有抽象方法,重写的方法不可以被写为抽象方法、不可以被写为static方法,可以写为final方法,但是权限必须等于或者比原抽象方法更加开放。
4、抽象类继承抽象父类后不需要重写父类的抽象方法,但能做到重写父类的抽象方法。