构造函数的变量命名

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("name="+name+",age="+age);
		cry();
	}
	Person(String n)//注意!!!!
	{
		name=n;
		System.out.println("name="+name+",age="+age);
		cry();
	}
	public void cry()
	{
		System.out.println("cry....");
	}
}
class PersonDemo2
{
	public static void main(String[] args)
	{
	Person p1=new Person("lisi");
	p1.cry();
	}
}

代码注意部分构造函数的变量命名为n,但这样没有阅读性,因为此变量是代表姓名,所以我们命名为  name;

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("name="+name+",age="+age);
		cry();
	}
	Person(String name)//!!!!!
	{
		name=name;//!!!!!
		System.out.println("name="+name+",age="+age);
		cry();
	}
	public void cry()
	{
		System.out.println("cry....");
	}
}
class PersonDemo2
{
	public static void main(String[] args)
	{
	Person p1=new Person("lisi");
	p1.cry();
	}
}

结果却出现name=null;而不是lisi

Person(String name)    {name=name;}

而当我们把局部变量设为n时,却可以赋值,这是因为当命名为name时,构造函数并没有把局部变量的name值赋给成员变量;

原因:赋值时,构造函函数里先在局部变量中找变量,找到了就使用局部变量,若没找到则找成员使用,例如当局部和成员的都有name时,构造函数的就使用局部变量的name,而不会调用成员;

若要赋值,就应该把赋值对象标记一下,引用关键字  this

this:看上去,是用于区分局部变量和成员变量同名情况;

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("name="+name+",age="+age);
		cry();
	}
	Person(String name)
	{
		this.name=name;//////!!!!!
		System.out.println("name="+name+",age="+age);
		cry();
	}
	public void cry()
	{
		System.out.println("cry....");
	}
}
class PersonDemo2
{
	public static void main(String[] args)
	{
	Person p1=new Person("lisi");
	p1.cry();
	}
}

显示lisi!!

this:就代表本类的对象,代表所在函数所属对象的引用;

简单说:哪个对象在调用this所在的函数,this就代表哪个对象。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-12 09:57:30

构造函数的变量命名的相关文章

【转】python变量命名规范

python源码和其他一些书籍,命名各种个性,没有一个比较统一的命名规范.于是总结了一些,供参考. 模块名: 模块应该使用尽可能短的.全小写命名,可以在模块命名时使用下划线以增强可读性.同样包的命名也应该是这样的,虽然其并不鼓励下划线. 主要是考虑模块名是与文件夹相对应的,因此需要考虑文件系统的一些命名规则的,比如Unix系统对大小写敏感,而过长的文件名会影响其在Windows\Mac\Dos等系统中的正常使用. 通常是小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样 类

前端变量命名之规则

无论是从技术角度还是开发视角,对于web前端开发规范文档都有一定规范,本文就css3和html5的发展前景总结了一系列的web开发文档,仅供大家参考. 规范目的: 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改. 基本准则: 符合web标准, 语义化html, 结构表现行为分离, 兼容性优良. 页面性能方面,

零基础学python-10.2 多目标赋值与变量命名规则

1.多目标赋值 >>> a=b=c='abc' >>> a,b,c ('abc', 'abc', 'abc') >>> 2.多目标赋值与共享引用 对于不可变对象是没有问题,但是对于可变对象,这里就有问题的了 >>> a=1 >>> b=a >>> b=a+1 >>> id(a) 505991632 >>> id(b) 505991648 >>>

封装 重载 构造函数 静态变量

namespace ConsoleApplication3 { class Class1 { private string _name; public string Name { get { return _name; } set { _name = value; } } private string _type; public string Type { get { return _type; }//取值 set { _type = value; }//赋值 } private string

JavaScript 变量命名规则

著名的变量命名规则Camel 标记法首字母是小写的,接下来的字母都以大写字符开头.例如: var testValue = 0, secondValue = "hi";Pascal 标记法 首字母是大写的,接下来的字母都以大写字符开头.例如: var TestValue = 0, SecondValue = "hi";匈牙利类型标记法 在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型.例如,i 表示整数,s 表示字符串,如下

python变量命名规则

在Python中,变量标记或指向一个值.当遇到变量时,Python将其替换为指向值. >>> cost=2.99 >>> .1*cost 0.29900000000000004 变量命名规则: 变量名的长度不受限制,但其中的字符必须是字母.数字.或者下划线(_),而不能使用空格.连字符.标点符号.引号或其他字符. 变量名的第一个字符不能是数字,而必须是字母或下划线. Python区分大小写. 不能将Python关键字用作变量名. 对于  x=expr这样的赋值语句,可以

【转】变量命名(简短且无歧义)

---恢复内容开始--- 湾区日报上分享的一篇文章,文章的作者在Google设计Dart语言,就变量命名方面给了4点建议,文中也列出了好变量名.坏变量名的对比.不管作者的看法与你实际中的命名习惯是否一致,看完这篇文章,相信可以在变量命名方面有一些新的思考. 原文地址(康桑阿米达):http://journal.stuffwithstuff.com/2016/06/16/long-names-are-long/?utm_source=wanqu.co&utm_campaign=Wanqu+Dail

C++变量命名规则

转自:http://www.cnblogs.com/finallyliuyu/archive/2010/09/25/1834301.html 浅谈C++变量命名规则 不知道别的公司如何,反正我现在的公司对变量命名并没有一定的规范,唯一要求就是能简单易懂,但是,我想,这个多个程序员,大概每个人都有自己习惯的一套 命名规则吧,不过,要是并不通用的话,大概看别人的程序会很头疼吧,SO 为了别人看偶的程序不至于太头疼,偶决定找个通俗的命名法来参考下,于是,搜到了匈牙利命名法... 匈牙利命名法的来历和介

【基础篇】各类语言的变量命名规则

----------------------------------------------JAVA----------------------------------------------- JAVA-区分大小写:类名和接口名是首字母大写:变量和方法是驼峰式:包名完全小写:静态变量完全大写 1. Package(包)命名: 完全小写 | 例如net.ebseries.modules. 2. Class(类)命名:首字母大写 | 多个单词合成,要求每个单词的首字母也要大写,例如:DataFil