博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA_SE基础——32.this关键字调用本类的构造方法
阅读量:5325 次
发布时间:2019-06-14

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

学习笔记。

下面我们来看段代码:

 

package day07;	class Student{		int id;  //身份证		String name;  //名字		public Student(int id,String name){  			this.id = id;			this.name = name;		}						public Student(){			System.out.println("无参的构造方法被调用了...");		}		public Student(String name){			this.name = name;		}	}class Demo6 {	public static void main(String[] args) {			Student s = new Student(458125899,"小明");			System.out.println("编号:"+ s.id +" 名字:" + s.name);				}}
运行结果:

 

编号: 458125899 名字: 小明

 

认为这样写的同学完全没有错。

 

P.S.

 

软件的可复用性在我们脑海中,最原始的做法当然是一段功能代码的复制,但作为开发人员应该嗅觉到代码中的坏味,这种复制可能导致到同一功能段代码散落四周,可维护性大打折扣。

   面向对象语言拥有4方面的特性:抽象,继承,封装,多态。它为我们提供更高层次的复用,这几年业务系统的开发设计中似乎对这4个特性未能运用好。

   我们来看看用于提高软件设计的可维护性、可复用性的设计原则:
   (1)开-闭原则(Open-Closed Principle OCP)
   (2)里氏替换原则(Liskov Substitution Principle LSP)
   (3)依赖倒转原则(Dependency Inversion Principle DIP)
   (4)接口隔离原则(Interface Segregation Principle ISP)
   (5)组合/聚合复用原则(Composition/Aggregation Principle CARP)
   (6)迪米特法则(Law of Demeter LoD)

   这六个设计原则往往都和面向对象语言的特性有关系,例如:JAVA语言提供的接口,抽象类就我个人而言,起码为OCP,LSP,ISP提供了比较容易的实现方法;

 

 

 

 

 

 

 

 

上面的代码中 有句重复的代码   可以思考下用this关键字来解决以上代码缺少复用性的特点吗?

 

注意下:

this关键字调用其他的构造函数要注意的事项:

1. this关键字调用其他的构造函数时,this关键字必须要位于构造函数中 的第一个语句。
2. this关键字在构造函数中不能出现相互调用 的情况,因为是一个死循环。

 

请看修改后的代码:

 

class Student{	int id;  //身份证	String name;  //名字	//目前情况:存在同名 的成员 变量与局部变量,在方法内部默认是使用局部变量的。	public Student(int id,String name){  //一个函数的形式参数也是属于局部变量。		this(name); //调用了本类的一个参数的构造方法		//this(); //调用了本类无参的 构造方法。		this.id = id; // this.id = id 局部变量的id给成员变量的id赋值		System.out.println("两个参数的构造方法被调用了...");	}			public Student(){		System.out.println("无参的构造方法被调用了...");	}	public Student(String name){		this.name = name;		System.out.println("一个参数的构造方法被调用了...");	}}class Demo6 {	public static void main(String[] args) 	{		Student s = new Student(458125899,"小明");		System.out.println("编号:"+ s.id +" 名字:" + s.name);	}}
运行结果:

 

 

一个参数的构造方法被调用了...
两个参数的构造方法被调用了...
编号:458125899 名字:小明

 

 

这样改的话 就增加了代码的复用性了。  重复的代码重复的功能显得没意义。

不懂的请认真看注释,或者留言

 

 

我不是什么专家,只是一个刚学JAVA没多久的菜鸟,希望有错大家可以点出。

 

 

 

转载于:https://www.cnblogs.com/Jhaiha0/p/8465311.html

你可能感兴趣的文章
第34节:Java当中的异常
查看>>
平均时间复杂度为O(nlogn)的排序算法
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
最大乘积问题
查看>>
codevs1002 搭桥
查看>>
Map源码学习之HashMap
查看>>
高品质免费字体集锦:25款英文艺术字体下载
查看>>
linux服务器上使用find查杀webshell木马方法
查看>>
Unix/Linux环境C编程入门教程(17) Gentoo LinuxCCPP开发环境搭建
查看>>
基于TP5使用Websocket框架之GatewayWorker开发电商平台买家与卖家实时通讯
查看>>
k8s取节点内docker中的日志
查看>>
turtle库基础练习
查看>>
SVM-笔记(1)
查看>>
android"百码"2——基础小知识积累(逐步完善)2015-06-15
查看>>
如鹏网学习笔记(四).Net常用类库
查看>>
IE浏览器解决margin:0 auto;不居中办法!
查看>>
解决响应式布局下兼容性的问题
查看>>
Jsp页面跳转和js控制页面跳转的几种方法
查看>>
京东静态网页练习记录
查看>>
Filebeat Config 参数详解:
查看>>