开发者社区> ghost丶桃子> 正文

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

简介:
+关注继续查看

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java开发——9.面向对象的特点(2.1):继承VS抽象
面向对象的特点:封装、继承和多态。
15 0
Java开发——9.面向对象的特点(二):继承+super
面向对象的特点:封装、继承和多态。
19 0
Java开发——11.面向对象的特点(三):多态
面向对象的特点:封装、继承和多态。
14 0
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
14 0
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
23 0
2022年/一月18号善于复盘回顾内容一(java的面向对象编程中的类对象属性 方法)Java面向对象的核心继承 封装 多态。(二)
2022年/一月18号善于复盘回顾内容一(java的面向对象编程中的类对象属性 方法)Java面向对象的核心继承 封装 多态。
15 0
2022年/一月18号善于复盘回顾内容一(java的面向对象编程中的类对象属性 方法)Java面向对象的核心继承 封装 多态。(一)
2022年/一月18号善于复盘回顾内容一(java的面向对象编程中的类对象属性 方法)Java面向对象的核心继承 封装 多态。
17 0
【Java SE】面向对象三大特性之多态
【Java SE】面向对象三大特性之多态
17 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载