【安卓学习笔记】JAVA基础Lesson7-继承
发布日期:2021-05-07 20:17:05 浏览次数:27 分类:精选文章

本文共 1645 字,大约阅读时间需要 5 分钟。

首先回顾之前学习的知识可知:一个类的组成有三个部分,构造函数成员变量成员方法(也就是成员函数)。

在面向对象的世界当中,继承就是一个类得到了另外一个类当中的成员变量和成员方法,在JAVA中只支持单继承;

如下两处代码:

代码段一:

class Lesson7{		String str;	int a;		void funA{		System.out.println("FunA:the Str = " + str + " the a = "+ a);	}}

代码段二:

class Lesson7_2 extends Lesson7{	}

代码段一是一个普通的类。

代码段二就使用了继承的方式定义。在是是有那个的时候用到了一个关键字"extends"。

其中Lesson7_2是子类,Lesson7是父类,在子类Lesson7_2中并没有定义任何的成员变量和成员方法,但是由继承的定义可知,Lesson7_2是包含有父类Lesson7中的成员变量和成员方法的。

编写测试代码如下:

class Test{	public static void main(String args []){		Lesson7_2 A = new Lesson7_2();		A.str = "Lesson7_2";		A.a = 20;				A.funA();	}}

测试输出结果如下:

D:\Android\src>javac Lesson7.javaD:\Android\src>javac Lesson7_2.javaD:\Android\src>javac Test.javaD:\Android\src>java TestFunA:the Str = Lesson7_2 the a = 20D:\Android\src>

这也验证了子类Lesson7_2拥有父类Lesson7_2中的成员变量和成员函数。当然了,子类当中也可以加入一些父类没有的成员变量和成员函数。

如:

class Lesson7_2 extends Lesson7{	String str2;	int a2;		void funA2(){		System.out.println("It is funA2!");	}}

通过把共同的成员变量和成员函数放在父类里面去,用继承的方式也可以减少代码的重复量,同时在工程中修改代码上会减少很多工作量。

/**************************************************华丽分割线*******************************************/

上述已经提到,子类可以集成父类的成员函数和成员变量,但是父类的构造函数是无法集成的。这就有了子类调用父类构造函数super的用法,同样使用super调用父类的构造函数也是为了子类为成员变量赋值和减少重复代码。

如:

class Lesson7{		String str;	int a;		void Lesson7(String str,int a){		this.str = str;		this.a = a;	}}

class Lesson7_2 extends Lesson7{	super("Lesson7_2",20);	System.out.println("this Lesson7_2 fun()");}
这里需要注意以下几点:

当在生成子类的过程中没有使用super调用父类的情况下,编译器会自动的生成一条super();也就是默认调用父类中无参数的构造函数。使用super来调用父类的构造函数,在编程的时候需要把super函数放在第一句。super调用父类中哪一个构造函数取决于传入的形参,根据形参的顺序、类型、个数等相匹配得到将要调用的父类中的构造函数,这一特征跟之前讲述的this用法也比较相像。

By Urien 2017年8月28日 21:08:22

上一篇:【安卓学习笔记】JAVA基础Lesson8-函数的复写与super用法
下一篇:【安卓学习笔记】JAVA基础Lesson6-关键字static

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月16日 18时41分55秒