Java类的继承(java类的继承实验总结)

createh54周前 (02-01)技术教程20

继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(重写)的方式,产生一个新的类型。继承是面向对 象的三个基本特征——封装、继承、多态的其中之一,我们在使用java时编写的每一个类都是在继承,因为在java语言 中,java.lang.object类是所有类最根本的基类(或者叫父类、超类),如果我们新定义的一个类没有明确地指定继承自哪个基类,那么java 就会默认为它是继承自object类的。

1.为什么需要使用继承?

提高代码的重用性。

提高程序的扩展性。

2.Java继承的语法格式

Java继承的关键字:extends

格式:

public class 类名(子类,派生类,超类) extends 类名(父类,基类) {

}

?注意:

Java类的继承是单继承。

3.子类继承到了父类的哪些属性和方法

子类继承父类后,子类继承到了父类所有的属性和普通方法。

构造方法没有被子类继承。

能不能调用方法或属性,是因为访问修饰符的关系来决定的。

public所有的地方都可以调用

protected当前包下和有继承关系不同包的子类中。

默认的只能在当前包下调用

private只能在当前类中。

子类能自己定义属性和方法吗?

可以并且子类可以拥有比父类更多的属性和方法

4.方法重写

方法重写的条件

必须要存在继承关系

方法的返回值类型,方法名,参数个数,参数类型,参数顺序都必须要和父类的完全一致。

子类重写方法时,方法的访问修饰符可以大于或者等于父类方法的访问修饰符。

在调用方法的时候是否会调用错方法?

创建的对象是否是子类的(new 构造方法())

如果是子类的构造方法创建的对象,那会优先执行子类的方法,子类没有才会执行父类的方法。

重载和重写的区别:

重载和重写都是针对方法的概念,在弄清楚这两个概念之前,我们先来了解一下什么叫方法的型构。型构就是指方法的组成结构,具体包括方法的名称和参数,涵盖 参数的数量、类型以及出现的顺序,但是不包括方法的返回值类型,访问权限修饰符,以及abstract、static、final等修饰符。比如下面两个就是具有相同型构的方法:

public void method(int i string s) {

// do something

}

public string method(int i string s) {

// do something

}

而这两个就是具有不同型构的方法:

public void method(int i string s) {

// do something

}

public void method(string s int i) {

// do something

}

重载:

英文名是overload,是指在同一个类中定义了一个以上具有相同名称,但是型构不同的方法。在同一个类中,是不允许定义多于一个的具有相同型构的方法的。

方法名相同,但参数类型、数量或顺序必有一不同。

在同一类中或有继承关系的类中均可重载。

重写:

英文名是override,是指在继承情况下,子类中定义了与其基类中方法具有相同型构的新方法,就叫做子类把基类的方法重载了。这是实现多态必须的步骤。

方法名、参数类型、数量、顺序必须完全相同,访问修饰符可以不同,但子类必须大于或等于父类。

只发生在有继承关系的类中。

5.自动转型

方向:由子类自动转为父类

前提:两个对象所在的类存在继承关系

语法:

[1]直接自动转型

父类名 对象名 = new 子类构造函数();

Student stu =new UNStudent();

[2]在方法中进行自动转型

子类名 对象名 = new 子类构造函数();

UNStudent unstu =new UNStudent();

teach(unstu);

访问修饰符 返回值类型 方法名(父类名 参数名){

}

public void teach (Student stu){

}

不必管创建对象左边的部分,只要看右边new的构造函数是子类还是父类, 如果是子类,则优先调用子类的方法。

注意:要使用自动转型,必须要存在继承关系。

格式:

父类名 对象名 = new 子类构造方法(参数值,...);

Student un = new UNStudent();

un.play();

使用自动转型后,不能调用子类自定义的方法;

因为Java编译时,只会根据对象名的类型去查找方法是否存在,如果存在则通过编译,如果不存在则报错。

实例:一个大学老师,可以教大学生,也可以教初中生,高中生,小学生

那么,对于这个教学的方法我们就可以只写一次。然后在使用时进行相应的自动转换一达到教学各种不同阶层学生的目地。

对于我们来说,使用自动转型,那么就只能调用父类中已经定义过的方法。

对于这个转型,我们有2种方法:

一: 父类名 父类对象名 = new 子类构造函数();

二:父类名 父类对象名 = new 子类构造函数() 子类名 子类对象名 = new 子类构造函数();

public 返回值类型 方法名(父类类名 父类对象名){

父类对象名.方法名();

}

方法名(父类对象名);

方法名(子类对象名);

但是,自动转型也是有明显缺点的,如果使用自动转型,则无法调用子类的独有方法。因为计算机比较笨,它只能按照固定的已经设定好的方式去执行,Java在编译的时候,是根据对象名的类型去编译程序,这个时候在子类中,是找不到相应的方法的,所以编译出错了。

6.多态

多态是由方法重载,继承,方法重写,自动转型等技术的组合。


相关文章

JAVA教程全集-电子版(中)(java教程电子书下载)

第4章 面向对象的程序设计基础如前所述,Java语言是一种纯面向对象的编程语言,面向对象的程序设计是以类为基础的。从本章开始,我们将从类入手,详细介绍面向对象程序设计的基本思想和方法。本章将简要介绍面...

父类实现了Serializable,子类不需要实现Serializable

相关注意事项 a)序列化时,只对对象的状态进行保存,而不管对象的方法; b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口; c)当一个对象的实例变量引用其他对象...

产品设计阶段:To B软件产品设计流程总结

到了产品设计阶段,大部分产品经理(尤其是技术转型的产品经理)终于可以大大的喘一口气了,这个阶段的工作应该是产品人最最熟悉的环节了。网上关于产品设计(我总觉得这个叫需求分析)的方法论还真是多的很,场景分...

Java|剖析类内的五类成员:属性、方法、构造器、代码块、内部类

Java的哲学是一切皆类,全部代码都写在类内。Java是纯面向对象的编程语言,类是其基石。Java类有五类成员:class Person{ // ① 属性,或成员变量 String n...

125题面试经常问的Java基础面试题整理与答案

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二...

「万字干货 | 图文」史上姨母级Java继承详解

首发公众号:bigsai 头条号:程序员bigsai 同时收录在回车课堂课程导学在Java课堂中,所有老师不得不提到面向对象(Object Oriented),而在谈到面向对象的时候,又不得不提到面向...