java的一些更抽象的东西
super
准备显式提供无参构造方法的父类
在实例化Hero对象的时候,构造方法会打印
“Hero的构造方法 "
package charactor;
import property.Item;
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
public void useItem(Item i){
System.out.println("hero use item");
i.effect();
}
public Hero(){
System.out.println("Hero的构造方法 ");
}
public static void main(String[] args) {
new Hero();
}
}
实例化一个ADHero(), 其构造方法会被调用
其父类的构造方法也会被调用
并且是父类构造方法先调用
子类会默认调用父类的 无参的构造方法
package charactor;
public class ADHero extends Hero implements AD{
@Override
public void physicAttack() {
System.out.println("进行物理攻击");
}
public ADHero(){
System.out.println("AD Hero的构造方法");
}
public static void main(String[] args) {
new ADHero();
}
}
使用关键字super 显式调用父类带参的构造方法
package charactor;
public class ADHero extends Hero implements AD{
@Override
public void physicAttack() {
System.out.println("进行物理攻击");
}
public ADHero(String name){
super(name);
System.out.println("AD Hero的构造方法");
}
public static void main(String[] args) {
new ADHero("德莱文");
}
}
final
- 当Hero被修饰成final的时候,表示Hero不能够被继承
其子类会出现编译错误
package charactor;
public final class Hero extends Object {
String name; //姓名
float hp; //血量
}
-
Hero的useItem方法被修饰成final,那么该方法在ADHero中,不能够被重写
-
final修饰基本类型变量,表示该变量只有一次赋值机会