频道栏目
首页 > 网络 > 云计算 > 正文

super和this的区别和特点

2018-08-20 09:38:05           
收藏   我要投稿

继承:

现实世界中:通过分析多种类型,然后发现有一些共同特征和共同行为

再将这些种类,归纳为一种新类型

如: 黄色皮肤的人

白色皮肤的人

黑色皮肤的人

|

再如: 小狗 --能动,能吃,能睡,能叫(汪汪)

小猫--能动,能吃,能睡,能叫(喵喵)

.......

|

动物

计算机语言中:

先编写父类类型,在编写子类型,然后再有对象。

如: 先编写Animal类型

再编写 Dog类或Cat类型

继承父类的成员变量和方法

再使用数据时,要么创建Dog对象/Cat对象

子类可以从父类中继承一些成员变量,和方法。子类还可以添加自己的

独有成员变量和方法。

子类:也叫派生类

父类:也叫超类,基类

关键字extends,用于继承语法

格式:

public class subClass extends SuperClass{

}

继承中的构造器:

子类不能继承父类的构造器,但是,子类中的构造器可以调用

父类的构造器

语法: super(有参传参);

作用:可以更好的给继承过来的成员变量赋值

PS:子类中的构造器一定会有一个调用了父类的构造器

父类中如果没有无参构造器,子类需要显式调用父类构造器

如果父类中有无参构造器,子类中的构造器可能隐式调用

父类的无参构造器.即:隐藏了super()

super()与this()的区别

相同点:都是调用构造器,而且必须放在首行首句。

不同点:super()是调用父类的构造器

this()是调用本类中其他构造器

继承的传递性:

继承特征有传递特性,B类型继承了A类型的特征,C类型继承了

B类型的特征。C类型也间接继承了A类型的特征

继承的另外一特点:

单继承: 一个子类只能继承一个父类。但是一个父类可以有

多个子类

一个源文件中,只能有一个public修饰的类,而且此类必须与文件名一致。

其他类可以不用修饰词

main也需要在public修饰的类中,才能生效。

方法的重写(override)

子类可以继承父类的方法,在继承时,我们可以在子类中

编写与父类中的方法名相同,参数列表也相同的方法。这就是

重写。

(1)父子类关系,方法名相同,参数列表相同

(2)返回值类型可以相同,也可以不同

[子类方法的返回值类型必须是父类方法的返回值类型的子类]

父类型的变量可以引用子类型的对象

如:

Animal a = new GoldFish();

Animal类型的变量a引用了子类型GoldFish的对象

符合人类的思维:

这条金鱼是动物

编译期绑定:

在编译过程中,变量只能调出本类型中的方法

在编译期间, 方法静态绑定到变量上

运行期绑定

在运行过程中,真正执行的方法的逻辑与对象的类型有关系。

简单说成:方法在运行期间,动态绑定到对象上。

成员变量的调用与变量的类型有关系(与编译期和运行期无关)

【在创建子类对象时,在内存中会不会产生父类对象】

【答案1: 会产生,没有父类对象,哪来的子类对象】

【答案2: 不会产生,创建子类对象时,子类对象的成员变量包含两部分:

一部分为从父类中继承过来的

在成员变量前有默认的super.

一部分是自己本类中的

在成员变量前有默认的this.

如果子类中独有的与继承过来的成员变量重名时,必须

显式指定使用super.或者是this.

如果子类中没有与继承过来的成员变量相同名时,我们可以

隐式不写,或者使用super.与this.其中任意一个。

为了避免不必要的麻烦,子类的成员变量尽可能不要与父类的

成员变量同名

构造方法重载:

\

显式调用父类有参构造器:

\

隐式调用父类有参构造器:

\

子类继承父类后再加一个成员变量:

\

父类型的变量引用子类型的对象

变量p有父类Person的方法

没有子类Student另添加的stduy方法

\

\

父类有形参,显式调用

\

父类无形参,显式调用

\

上一篇:Java,Spark中二次排序原理+Java代码
下一篇:redis配置安装
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站