关于Java的继承

继承将一个类中的变量和方法传递给其他类。

Java,Ruby和Python等面向对象编程语言具有的特点。

将作为基础的类称为父类(超类、基类),将继承它的类称为子类(子类、派生类)。

继承的形象

动物(父类)
属性
· 名字(name)
· 年龄(age)
方法
· 吃饭(eat)
· 散步(walk)

请用汉语本地化地转述以下内容,只需要一个选项:
↓↓

狗(子类)
新增方法
·吠叫(吠叫)
·奔跑(奔跑)

人类(子类)
附加方法
– 说话(talk)
– 工作(work)

你能用中文把以下句子意思改写一下吗?只需要给出一个选项:

– The movie was so impactful that it made me cry.

当创建具有共同项目和属性的多个类时,可以使用继承,就像上面的图像一样。


//親クラスとなる動物クラス
public class Animal{
  public String name;  //名前
  public int age; //年齢
  public void eat(String something) {
      //食べる
     System.out.println(something + "を食べました");
  }
  public void walk(int a){ 
     //歩く 
     System.out.println(a.toString(); + "メートル歩きました");
  }
}


//動物クラスを継承して作った、犬クラス
public class Dog extends Animal {
  //吠える
  public void bark(){
    System.out.println("ワン");
  }
 //走る
 public void run() {
 }
}

//動物クラスを継承して作った、人間クラス
public class Human extends Animal {
  //しゃべる
 public void talk(String tk){
   System.out.println("「" + tk + "」");
 }
 //仕事をする
 public void work(){
 }
}

使用继承的好处

编程的行数减少了,也节省了时间。
如果不使用继承的话,

//動物クラスを継承しないで作った、犬クラス
public class Dog {
  public String name;  //名前
  public int age;//年齢

  public void eat(String something) {
      //食べる
      System.out.println(something + "を食べました");
  }
  public void walk(int a){ 
     //歩く 
     System.out.println(a.toString(); + "メートル歩きました");
  }
  //吠える
  public void bark(){
    System.out.println("ワン");
  }
 //走る
 public void run() {
 }
}

//動物クラスを継承しないで作った、人間クラス
public class Human extends Animal {
  public String name;  //名前
  public int age;//年齢

 public void eat(String something) {
      //食べる
      System.out.println(something + "を食べました");
  }
  public void walk(int a){ 
     //歩く 
     System.out.println(a.toString(); + "メートル歩きました");
  }

  //しゃべる
 public void talk(String tk){
   System.out.println("「" + tk + "」");
 }
 //仕事をする
 public void work(){
 }
}

在子类中重复编写了父类的变量和方法。❌
而且,如果尝试修改父类,则需要修改两个地方。❌
如果将父类合并为一个,修改只需一个地方。⭕️

将父类的变量和方法都重写在子类中。❌
而且,如果想要修改父类,则需要修改两个地方。❌
如果把父类合并成一个,只需要在一个地方进行修改。⭕️

2、可以同时处理具有相同继承基类的类们。
例如,当想要将所有动物都放在一辆卡车上时,只要它们都继承自同一个动物类,就可以将它们作为一个整体进行变量处理。


//動物クラスの型のオブジェクトを格納する配列
Animal[] animals;
//犬も、人間も、まとめられる
animals = { new Dog(); new Human()};

继承的特点

在子类中可以使用父类的字段(变量,方法)。动物(Animal)的名称(name)和食物(eat)也是狗(dog)拥有的。
也就是说,父类的功能虽然看不见,但子类也拥有。

在子类中可以重写(覆盖)父类的方法。可以覆盖继承的方法。
这样可以使相同的方法具有不同的功能。
但是,参数必须保持一致。

可以继承继承(子类)。可以将子类作为父类,并创建子类的子类。


public class Animal {

}

public class Dog extends Animal {

}

pubic class WhiteDog extends Dog {
  public String color = "white";
}

创建一个子类作为白色狗。

家族の財産を継承する際の留意点

使用final关键字修饰的父类字段禁止被重写。如果加上 final,在代码中就无法进行覆写的方法。
当不希望被随意修改处理时使用。

无法同时继承两个类。

class Tuna extends Animal, Fish  

上述的情况是,对于金枪鱼想要同时继承动物和鱼的特征,但是无法实现❌

构造函数不会被继承,会隐式执行。※ 构造函数是指在从类中创建对象时自动执行的方法


public Dog extends Animal {
  //コンストラクタ
  Dog(){
  }
}

public Dog extends Animal {
  //コンストラクタ
  Dog(){
    super();
  }
}

上述的代码有着相同的含义。
即使在子类中尝试重写构造函数,隐式地也会执行父类的构造函数。
即使子类没有构造函数,也会执行父类的构造函数。

bannerAds