且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Java千百问_05面向对象(007)_java类的继承有什么意义

更新时间:2022-09-09 11:01:52

1、继承是什么

继承,是面向对象语言的重要机制。 
概念:一个类(子类)可以使用从另一个类(父类、超类)继承属性和方法。 
Java中的继承是单一继承,即一个子类只能有一个父类。 
当然,接口(interface)也可以继承。 
了解什么是类看这里:类、对象到底有什么秘密 
了解接口的概念看这里:java接口到底是什么 
接口和抽象类的区别看这:接口和抽象类有什么区别

2、如何使用继承

广义上讲,继承类、继承抽象类、实现接口都可以称为继承,但目前所说的java继承只是继承类或抽象类,即is-a模式最直接的体现。 
了解更多is-a模式看这里:is-a,has-a,like-a是什么 
继承类、抽象类使用extends关键字,实现接口使用implements关键字。通过使用这些关键字,我们可以使一个对象获得另一个对象的属性及方法。

例如:

public class Animal{
}

public class Mammal extends Animal{
}

public class Reptile extends Animal{
}

public class Dog extends Mammal{
}

根据上面的例子,面向对象的术语即:

  • 动物是哺乳动物类的父类。
  • 动物是爬虫类的父类。
  • 哺乳动物和爬行动物是动物类的子类。
  • 狗是哺乳动物双方和动物类的子类。
  • 因此:狗也是动物的子类。

使用这个例子:

public class Dog extends Mammal{

   public static void main(String args[]){

      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}


这将产生以下结果: 
true 
true 
true

要注意的一个非常重要的事实是,Java只支持单一继承。这意味着,一个类不能扩展多个类。因此,以下是非法的:

public class extends Animal, Mammal{
}





3、如何继承接口

接口也可以扩展另一个接口,类似于一个类扩展另一个类中的方法。同样使用extends关键字来扩展接口,使子接口继承父接口的方法。 
下面的Sports接口是由Hockey和Football接口扩展。

//Filename: Sports.java
public interface Sports
{
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}

//Filename: Football.java
public interface Football extends Sports
{
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}

//Filename: Hockey.java
public interface Hockey extends Sports
{
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}



Hockey接口有四个方法,但它继承了两个Sports接口的方法,因此,实现Hockey类需要实现六个方法。同样地,一个实现Football类需要实现Football的三个方法,以及Sports的两个方法。

4、java如何多重继承

我们知道,一个java类只能继承一个父类,所以,多重继承是不允许的。 
但是,一个接口可以扩展多个父接口。 
例如,Sports和Event都是接口:

public interface Hockey extends Sports, Event