博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中方法重写 this和super的区别
阅读量:2441 次
发布时间:2019-05-10

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

1.1 方法重写应用场景&注意事项

   方法重写的应用场景:当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能

    方法重写的注意事项:

   不可以重写父类私有的成员方法,压根就看不到父类的私有成员

  子类重写父类方法,权限必须大于等于父类方法的权限

   注解

     @Override:方法重写,说明下面的方法是重写父类的方法

案例代码

package com.itheima_03;/* * 	方法重写的应用场景:当父类的方法不能完全满足子类使用,这个时候子类重写父类的方法, * 				    并可以在方法中使用关键字super调用父类的方法,这样做即可以保有父类的功能,也可以拥有子类特有的功能 *  方法重写的注意事项: *  			  不能重写父类私有的方法 *  			 权限必须大于等于父类方法的权限 *   *  注解:@ *   */public class ExtendsDemo5 {	public static void main(String[] args) {		NewPhone np = new NewPhone();		np.call();	}}class Phone {	void call() {		System.out.println("打电话");	}}class NewPhone extends Phone {		@Override	public void call() {		System.out.println("录音");		//System.out.println("打电话");				//super.call();	}}

1.2 继承中构造方法的执行顺序

   A:super(实参列表);语句  在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用

   B:this(实参列表); 语句  在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用

案例代码

package com.itheima_01;/* * 继承中构造方法的执行顺序 * 			在子父类中,创建子类对象,调用子类的构造方法, * 			在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造 * 为什么要调用父类构造? * 			因为需要给父类的成员变量初始化 * 肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码 *  * 我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造 */public class ExtendsDemo6 {	public static void main(String[] args) {		//Die d = new Die();		Zi6 z = new Zi6();	}}class Die6 {	public Die6() {		System.out.println("我是父类无参构造");	}		public Die6(int num) {		System.out.println("我是父类有参构造");	}}class Zi6 extends Die6 {	public Zi6() {		//super(1);		//super();				this(1);//不会再调用父类的无参构造了				System.out.println("我是子类无参构造");	}		public Zi6(int num) {		//会默认调用父类无参构造		System.out.println("我是子类有参构造");	}}

1.3 this与super区别

package com.itheima_01;/* * this和super的区别		this:当前对象的引用			调用子类的成员变量			调用子类的成员方法			在子类的构造方法第一行调用子类其他构造方法		super:子类对象的父类引用			调用父类的成员变量			调用父类的成员方法			在子类的构造方法第一行调用父类的构造方法 */public class ExtendsDemo7 {	public static void main(String[] args) {		Zi z = new Zi();		z.function();	}}class Die {	int num = 10;		public Die() {		System.out.println("我是父类无参构造");	}		public Die(int num) {		System.out.println("我是父类有参构造");	}		public void method() {		System.out.println("我是父类的方法");	}}class Zi extends Die {	//int num = 30;		public Zi() {		//this(1);//第一行不调用子类其他构造或者是父类构造,默认调用父类无参构造		super();		System.out.println("我是子类无参构造");	}		public Zi(int num) {		System.out.println("我是子类有参构造");	}		public void method() {		System.out.println("我是子类的方法");	}		public void function() {		//this.num = 50;		//System.out.println(num);		//this.method();				//super.num = 40;		//super.method();				System.out.println(this.num);	}}

1.4 继承优缺点

A:优点

提高了代码的复用性

提高了代码的可维护性

B:缺点:

类的耦合性增强了

开发的原则:高内聚低耦合

内聚:就是自己完成某件事情的能力

耦合:类与类的关系

转载地址:http://cjjqb.baihongyu.com/

你可能感兴趣的文章
为您的网站提供动力的100种Jamstack工具,API和服务
查看>>
api restful_构建RESTful API的13种最佳实践
查看>>
wordpress用途_8个热门WordPress多用途主题及其炫酷功能
查看>>
用于Angular,React和Vue.js的Bootstrap UI库
查看>>
vue 分步引导组件_引导卡组件:完整介绍
查看>>
cdo气候_开发人员可以为气候行动做出贡献的7种方法
查看>>
fa fa-user_如何通过短信通过2FA保护Laravel应用
查看>>
使用MongoDB Stitch在10分钟内构建一个Slack应用
查看>>
next主题seo优化_SEO可见性的5个最佳WordPress主题
查看>>
揭穿3个常见的WordPress神话
查看>>
bootstrap步骤_通过8个简单步骤进行Bootstrap和WordPress主题集成
查看>>
struts2 css失效_CSS体系结构和可维护CSS的三大Struts
查看>>
您可能不知道WooCommerce可以做的10件事
查看>>
php使用nginx建网站_如何使用预建网站来刷新网站的外观
查看>>
wordpress快速建站_您的WordPress主题灵活还是快速?
查看>>
bootstrap布局技巧_加快Bootstrap网站的3个技巧
查看>>
bootstrap网格_Bootstrap网格:掌握最有用的Flexbox属性
查看>>
symfony 控制器_重新引入Symfony控制台-适用于未开始使用的CLI PHP!
查看>>
wordpress插件开发_WordPress插件开发简介
查看>>
响应式编程 函数式编程_Phunkie进行函数式编程:PHP中的解析器组合器
查看>>