1.抽象方法即待实现方法,不完整的方法,那么所在类肯定也不完整
2.子类继承抽象类,那么子类为抽象类或者抽象方法
3.protected用于子类继承父类,修饰父类方法和变量,使得f该方法在子类可调用但是在不同包不能调用
4.对于父类方法重新定义是,权限只能扩大或不变,不能缩小
5.子类实例化时如果没有调用父类的构造方法,那么会自动调用父类默认的无参构造方法super(),super必须在第一行,但是当父类没有参数构造函数,子类又没有调用父类的有参构造函数时,编译失败
6.final修饰的变量自能赋值一次,在申明时没有赋值表示延时赋值,需要在接下来的代码赋值,而不是默认为零,如果接下来m没有赋值,会报错。fianl修饰的类表示不能再被继承,final修饰的方法表示最后的方法,不能再重新或者重新定义如。
7.对于没有说明继承什么的类来说,一定时默认继承object类
8.finalize方法时在垃圾回收之前自动调用的方法
package InheritAndPolymorphism;
public class Main {
public static void main(String[] args) {
demoMagiCian();
demoSwordsMan();
}
static void demoSwordsMan() {
SwordsMan swordsMan=new SwordsMan();
swordsMan.setName("剑士");
swordsMan.setLevel(1);
swordsMan.setBlood(200);
System.out.printf(
"Role name is: %s\n"
+ "Role level is: %d\n"
+ "Role Blood id : %d",
swordsMan.getName(),swordsMan.getLevel(),swordsMan.getBlood());
showBlood(swordsMan);
}
static void demoMagiCian() {
MagiCian magician=new MagiCian();
magician.setName("魔法师");
magician.setLevel(1);
magician.setBlood(200);
System.out.printf(
"Role name is: %s\n"
+ "Role level is: %d\n"
+ "Role Blood id : %d\n\n",
magician.getName(),magician.getLevel(),magician.getBlood());
showBlood(magician);
}
/**
* 如果Role改为角色类,那么有100个角色需要重载100次,显然不是很好,用多态可以解决这个问题
* 所以即通过Role来操作具体的一种类叫做多态
*/
static void showBlood(Role r) {
System.out.println("剩余血量是:"+r.getBlood());
}
}