6引用传递一— DemoN5jgva class Persont String name ∥声明姓名属性 int age ∥声明年龄属性 public void tell(t ∥取得信息 System, out. printIn("姓名:"+name+",年龄:"+age); public class Demo05( public static void main( String argsI Di Person perl new Person() Person per2= perl perl. name 张 perl. age =30; 引用传递就是将一个堆内存空间的使用权交给 多个栈内存空间,每一个栈内存空间都可以修 改堆内存空间的内容,并使其内容保留下来a8
class Person{ String name ; // 声明姓名属性 int age ; // 声明年龄属性 public void tell( ){ // 取得信息 System.out.println("姓名:" + name + ",年龄:" + age) ; } } public class Demo05{ public static void main(String args[ ]){ Person per1 = new Person( ) ; Person per2 = per1 ; per1.name = "张三" ; per1.age = 30 ; per2.age = 33 ; per1.tell( ) ; per2.tell( ) ; } } 6.引用传递——Demo05.java 引用传递就是将一个堆内存空间的使用权交给 多个栈内存空间,每一个栈内存空间都可以修 改堆内存空间的内容,并使其内容保留下来。18
6.引用传递一-Demo06java class Persont String name i 声明姓名属性 Int age i ∥声明年龄属性 public void tell(i ∥取得信息 System. out printIn("姓名:"+name+",年龄:"+age); public class Demoo6& public static void main(String args) Person perl new Person( i Person per2= new Person( i perl.name="张三"; perl. age =30 per2name="李四 per2 age =33 个栈内存空间只能指向一个堆内存空间 如果想要再指向其他的堆内存空间,则必 须先断开已有的指向,才能分配新的指向9
6. 引用传递——Demo06.java class Person{ String name ; // 声明姓名属性 int age ; // 声明年龄属性 public void tell( ){ // 取得信息 System.out.println("姓名:" + name + ",年龄:" + age) ; }} public class Demo06{ public static void main(String args[]){ Person per1 = new Person() ; Person per2 = new Person() ; per1.name = "张三" ; per1.age = 30 ; per2.name = "李四" ; per2.age = 33 ; per2 = per1 ; per1.tell() ; per2.tell() ; } } • 一个栈内存空间只能指向一个堆内存空间 • 如果想要再指向其他的堆内存空间,则必 须先断开已有的指向,才能分配新的指向19
4.3封装性 封装有两个含义 1把对象的属性和行为看成一个密不可分的整 体将这两者“封装”在一个独立单位(对象)中 2信息隐蔽。把不需要让外界知道的信息隐藏 起来,或允许知道和使用,但不允许更改,尽 可能隐蔽对象的功能实现细节。 操作:使用权限修饰符设置属性和方法的可见度 权限从大到小依次是 public> protected >default> private 20
4.3 封装性 • 封装有两个含义 1.把对象的属性和行为看成一个密不可分的整 体,将这两者“封装”在一个独立单位(对象)中 2.信息隐蔽。把不需要让外界知道的信息隐藏 起来,或允许知道和使用,但不允许更改,尽 可能隐蔽对象的功能实现细节。 • 操作:使用权限修饰符设置属性和方法的可见度 权限从大到小依次是 public > protected > default > private 20
范例Demo7.java封装属性 class Person i private String name; private int age; public void speak System. out. printIn'"姓名:"+name+"、年龄:"age); public class Demo07t public static void main (String args)i Person per new Person() rename="张 peerage =30 perspeak( 操作:Demo07.java观察结果 21
class Person { private String name; private int age; public void speak( ){ System.out.println("姓名:"+name+"、年龄:"+age); } } public class Demo07{ public static void main(String[] args){ Person per = new Person( ); per.name = "张三"; per.age = 30; per.speak( ); } } 范例Demo07.java 封装属性 操作:Demo07.java 观察结果 21
解决办法1 必须遵守的原则一一属性必须封装 例: private String name 解决办法 可以使用set方法为封装的属性赋值。 可以使用get方法取得封装属性的内容。 范例Demo8 java set/get方法的使用
解决办法1 • 必须遵守的原则——属性必须封装 • 例: private String name; • 解决办法 可以使用set方法为封装的属性赋值。 可以使用get方法取得封装属性的内容。 • 范例Demo08.java set/get方法的使用