继承与接口
普通类与普通类
子类可以继承父类的方法和属性
在Class里给extends來继承
继承extends:所有参照范围内的属性及方法
public class PoisonMatango extends Matango {
- 注意:
如果是相同内容的东西,子类可以不用写,会自动从父类继承。
如果在子类改写了继承来的东西的话,执行的是被改行了的子类的内容。
如果在类写上final,该类不可继承
如何方法写上final,被继承后不可重写
- 关系
賦值 | 使用方法 | 父類、子類 |
---|---|---|
HAS-A | USE-A | IS-A |
抽象类(abstract)与普通类
继承extends:所有参照范围内的属性及方法
但:抽象方法必须Override重写
接口(interface)与普通类
- 接口内 只有抽象方法
- 遵从implements:
- 接口内的属性(public static final)
- 方法必须要重写
- 接口里只需要写 剩下的内容
- 返回值 + 方法名 +(参数)
多数接口(interface)与普通类
接口内 只有抽象方法
遵从implements:复数接口之间用“,”链接
接口与接口
继承extends:可以有多个接口对接
接口与抽象类
如果一个抽象类遵从一个接口,那么接口内的方法在抽象类里不是必须重写的;
但是继承抽象类的子类里必须要重写;
- 接口不能通过自己的构造器来创建对象,但可以通过其他class来创建:比如多态!
例:
- 父類
public class Matango {
int hp = 50;
char suffix;
public Matango(char suffix) {
this.suffix = suffix;
}
public void attack(Hero h) {
System.out.println("キノコ" + this.suffix + "の攻撃");
System.out.println("10のダメージ");
h.hp -= 10;
}
}
- 子類
public class PoisonMatango extends Matango {
public PoisonMatango(charsuffix){
super(suffix); }
int Poison=5;
public void attack(Hero h) {
super.attack(h);
if(Poison>0) {
System.out.println("さらに毒の胞子をばらまいた!");
}
}
}
代码 | 使用权限范围 | |
---|---|---|
Private | 只能在自类里引用 | 屬性,方法 |
Delfut | 只能在自包/自类里引用 | 類, 屬性,方法 |
Protected | 继承了自己的子类,或在自包引用 | 屬性,方法 |
public | 全类 | 類, 屬性,方法 |
用了private的話可以用get/set方法,設定/返回。