java类的继承

java中的继承用extends关键字来实现,被继承的类叫做超类、父类、基类,实现继承的类称为子类、派生类。

子类是一种特殊的父类,因此可以看作父类是大类,子类是小类。

extends实际上是拓展的意思,而父类和子类的关系实际上用拓展来解释似乎更加的恰当,子类在父类功能的基础上增加新的功能。

在继承中,除开父类的构造器以外,子类几乎可以继承父类所有的功能和属性。

每个类最多只能有一个直接的父类,可以有无限多个间接父类,就像人一样,只能有一个亲生父亲。

若一个类定义的时候没有显示定义直接父类,则默认继承java.lang.Object,他是所有类的父类,因此所有的java对象都可以调用java.lang.Object的实例方法。

父类引用可以指向子类对象,即声明一个父类型的变量可以实例化为子类的对象,这也是java多态性的一个重要的实现方式。除此之外,方法的重载也是多态性的实现方式之一。

需要注意的是,重写方法和被重写的方法必须同时都是类方法或者同时都不是类方法。

继承中还有一个很重要的概念是重写,对于子类重写过的方法,使用时究竟使用重写前的版本还是重写后的版本,取决于对象的类型而不是引用的类型。

重写的时候,子类方法会覆盖父类的方法,父类private方法不可被重写。

有的时候,当子类定义了与父类同名的属性时,也会覆盖父类的属性。正常情况下,子类定义的方法、子类属性直接访问该属性时,都会默认访问覆盖后的方法和属性而无法访问到被覆盖的方法和属性。但是在子类定义的实例方法中可以通过super来访问父类被覆盖的方法和属性。

如果子类中没有和父类同名的属性,那么访问的时候不需要用super,可以直接访问。和this一样,super也不能出现static方法中。

继承的时候不继承父类的构造器,如果在子类中一定要用的话,也可以通过super来调用。而即使不显示的调用父类构造器,系统也会默认在子类构造器执行体的第一行调用父类构造器一次,只不过是调用父类的无参构造器。

super调用和this调用不会同时出现。

子类构造器调用父类构造器有几种情况:

1.super显示调用,系统会根据super里的实参列表选择调用父类的哪个构造器。

2.子类构造器执行体的第一行用了this调用本类重载的构造器,那么在执行调用的构造器的第一行会调用父类的构造器。

3.子类中既没有this调用也没有super调用,系统会默认在子类构造器执行体的第一行调用父类的无参构造。

创建任何对象总是从该类继承树的最顶层构造开始执行,然后依次向下,最后才是本类。

时间: 2024-09-17 03:36:56

java类的继承的相关文章

java类 B继承A 打印调用类名问题

问题描述 java类 B继承A 打印调用类名问题 代码如下 B集成A 在B类中打印super 和this得到类名 class A{ } class B extends A{ systemout.println(super.getClass()); systemout.println(this.getClass()); } class Test { public static void main(String[] args) { // TODO Auto-generated method stub

(十三)java类的继承

     java中的继承用extends关键字来实现,被继承的类叫做超类.父类.基类,实现继承的类称为子类.派生类.     子类是一种特殊的父类,因此可以看作父类是大类,子类是小类.     extends实际上是拓展的意思,而父类和子类的关系实际上用拓展来解释似乎更加的恰当,子类在父类功能的基础上增加新的功能.     在继承中,除开父类的构造器以外,子类几乎可以继承父类所有的功能和属性.     每个类最多只能有一个直接的父类,可以有无限多个间接父类,就像人一样,只能有一个亲生父亲.  

java类继承的语法

继承与Java(以及其他OOP语言)非常紧密地结合在一起.我们早在第1章就为大家引入了继承的概念,并在那章之后到本章之前的各章里不时用到,因为一些特殊的场合要求必须使用继承.除此以外,创建一个类时肯定会进行继承,因为若非如此,会从Java的标准根类Object中继承. 用于合成的语法是非常简单且直观的.但为了进行继承,必须采用一种全然不同的形式.需要继承的时候,我们会说:"这个新类和那个旧类差不多."为了在代码里表面这一观念,需要给出类名.但在类主体的起始花括号之前,需要放置一个关键字

JAVA程序员必读:基础篇(4)类和继承

程序|程序员|继承 这节教程将开始讨论对象的生命周期.包括怎样创建对象.怎样使用它以及在不使用它的时候将它从系统中清除.下面一个一个介绍:4.1 对象的生命周期 在这一小节中你可以学到怎样创建和使用任何类型的对象,还讨论了当对象不再需要的时候系统怎样清除对象的. 典型的JAVA程序创建对象,对象之间的交互是通过发送消息来实现的.通过这些对象的交互,JAVA程序可以执行一个GUI.运行一个动画或者通过网络发送和接收信息.一旦对象已经完成了任务,它就被作为无用信息被回收,它的资源可以由其它对象回收利

java类的问题-java编程,有关类的继承,方法的覆盖等

问题描述 java编程,有关类的继承,方法的覆盖等 类Citizen,拥有identityCardNumber(String).name(String).gender(char).birthPlace(String).birthday(java.util.Date)属性,构造方法Citizen(String identityCardNumber, String name, char gender).Citizen(String identityCardNumber, String name, c

java一个已继承东西的类如何使用actionSupport里的getText()方法

问题描述 java一个已继承东西的类如何使用actionSupport里的getText()方法 java中,我的一个公共类已继承了一个java类,如何在这个类里使用actionSupport里的getText()方法? 解决方案 ActionSupport.getText()方法ActionSupport.getText()方法ActionSupport.getText()方法 . 解决方案二: 呵呵 经验告诉我 有办法 单继承的java 一般会有俩种机制 1:是继承 2:是实现接口,

JAVA中阻止类的继承(官方和非官方)_java

官方办法 JAVA语言提供的一个关键字"FINAL"可以用来履行该任务.看看下面的源代码范例: 复制代码 代码如下: //FinalDemo.java public final class FinalDemo { }     下面让我们来制作另一个类,它将会继承上面声明的类.JAVA语言提供的"EXTENDS"关键字将能够使得一个类继承于一个现有的类. 复制代码 代码如下: //FinalDemo2.java public class FinalDemo2 exte

java类的问题-JAVA中的继承与封装以及循环

问题描述 JAVA中的继承与封装以及循环 求一份JAVA中的汽车租赁系统源代码,谢谢!!(北大青鸟的课后题)

C++类的继承与多重继承的访问控制

在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论. 对于单个类来说,讨论保护继承与私有继承的区别意义是不大的,他们的区别只在多级继承的情况中体现. 在这里我声明一下,对于此章节的内容不太适合用过多的文字进行描述,主要还是看例子,通过例子熟悉之间的关系,过多的文字描述会模糊读者思路. 例程如下(重要部分都做了详细说明): //程序作者:管宁//站点:www.cndev-lab.com//所有稿