首页 > 编程语言 > 详细

Java基础-学习笔记(六)——类的封装性

时间:2015-11-04 00:39:49      阅读:313      评论:0      收藏:0      [点我收藏+]

1、类是模板,对象是具体的实例

2、如果成员函数中的局部变量与成员变量名一致,则该方法对这个变量名的访问是局部变量

class lesson1
{
	int age=9;
	void talk()
	{
		int age = 2;
		System.out.println("my age is "+age);
	}
	public static void main(String [] args)
	{
		lesson1 test = new lesson1();//()一定要有,这样它才通过调用系统默认的构造函数
		test.talk();
	}
}

/*
F:\java_example>java lesson1
my age is 2
*/

3、生成对象时,内存的分配

lesson1 test = new lesson1();

等号左边以类名lesson1作为变量类型定义了一个test变量,来指向等号右边通过new关键字创建的一个lesson1类的实例对象,变量test就是对象的引用句柄,对象的引用句柄是栈中分配的一个变量,对象本身,是在堆中分配的。test的只即为该对象在堆中的首地址。

4、==与equals的区别

lesson1 t1 = new lesson1();

lesson1 t2 = t1;

leeson1 t3 = new lesson1(); 

t1,t2两个变量指向同一个对象,即t1、t2中存的都是lesson1的首地址,if(t1==t2),则为true

t1,t3两个变量分别指向两个新创建的lesson1对象,尽管创建的两个string实例对象看上去一模一样,但它们是两个彼此独立的对象,是两个占据不同存储空间的不同对象,if(t1.equals(t3)),则为true

t1和t3分别指向了两个新创建的lesson1类对象

5、匿名对象

class lesson1
{
	int age=9;
	void talk()
	{
		int age = 2;
		System.out.println("my age is "+age);
	}
	public static void main(String [] args)
	{
		//lesson1 test = new lesson1();//()一定要有,这样它才通过调用系统默认的构造函数
		new lesson1().talk();
	}
}

/*
F:\java_example>java lesson1
my age is 2
*/

  这段代码没有产生任何句柄,而是直接用new关键字创建了一个lesson1的对象,并直接调用它的talk方法,得到的结果和之前是一样的,这个方法执行完,这个对象也就变成了垃圾

使用匿名对象的两种情况:

(1)当一个对象只需要进行一次方法调用时,可以使用匿名对象

(2)将匿名对象作为实参传递给一个函数调用,比如

public static void getsomeone(Person p)

{

  ......

}

可以使用如下语句来调用这个函数

getsomeone(new Person.())

6、构造函数

构造函数的功能主要用于在类的对象创建时定义初始化的状态

构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的。

当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象

Java基础-学习笔记(六)——类的封装性

原文:http://www.cnblogs.com/tiantianxiangshang33/p/4934713.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!