10 public void introduction() {
11 System.out.println(\我的名字叫\12
System.out.println(\我的年龄是\岁\
13 }
14 public void eat() { 15
System.out.println(\每个人都要吃饭\
16 } 17 }
18 // 测试类,可以和Person类写在一个文件中,文件名和public类同名 19 class PersonTest {
20 public static void main(String args[]) { 21
Person p1 = new Person(\创建对象的同时,初始化 22 Person p2 = new Person(\
23 System.out.println(\24 System.out.println(p2.name + \25 p1.introduction(); 26 p2.eat();
27 } 28 }
保存程序为Person.java,编译后,运行PersonTest.class文件,程序运行结果为: p1's name is Jack.Steven is 21 years old.我的名字叫Jack。我的年龄是18岁。每个人都要吃饭
1.构造方法的名字与包含它的类相同,在语法上类似于一个方法。构造方法没有返回值,甚至连void修饰符都没有(因为它只是用来创建对象)。
作用:实现对象在实例化时的初始化(当对象在实例化时将自动地调用构造函数,实现对其成员数据赋初值)。如下列代码:
Rectangle rectA=new Rectangle();//对象在实例化时未初始化其属性 Rectangle rectA=new Rectangle(10,10,200,200);//对象在实例化时初始化其属性
2. 构造函数的可能形式
类中未定义出构造函数时,此时系统中会生成一个缺省形式的构造函数(函数体为空),对象在实例化时将不能进行初始化;
重载形式(定义出多个同名的构造函数时),从而可以在对象实例化时以多种方式初始化它,在讲解多态时给出例子。 3.this关键字的使用。
当方法内部定义的局部变量和成员变量同名时,如果要调用成员变量,就要用this。没有同名的状况发生就不需要用this。
完善Person类——带get和set方法(封装)
? 步骤1:在8.1Person类中修改属性为私有的,增加set和get方法 1 public class Person 2 {
3 private String name; // 定义人的姓名为私有的
4 private int age; // 定义人的年龄为私有的 5 // 类的构造方法,用于初始化成员变量 6 Person (String name,int age){ 7 this.name= name; 8
this.age= age;
9 }
a) public String getName() {
10 return name; 12 }
13 public void setName(String name) { 14 this.name = name; 15 }
16 public int getAge() { 17 return age; 18 }
19 public void setAge(int age) {
20 // setAge()方法采取了保护措施,用户调用该方法时对年龄验证不会出现年龄为负数的情况 21 if(age<0){
22 System.out.println(\错误!年龄不能为负数!\23 }
24 else{ this.age = age;} 25 }
26 public void introduction () // 定义introduction ()方法 27 {// 略,与原代码一致 }
28 public void eat() // 定义eat ()方法 29 {// 略,与原代码一致 } 30 }
步骤2:在代码8.2中修改第7和8行代码
P1.setName(“Jack “); //测试类中通过调用setter方法,为对象的各个属性赋值 P1.setAge(18);
封装的概念
封装(encapsulation),即信息隐藏,封装的目的有: ? 隐藏类的实现细节,以防别人误用。 ? 迫使用户通过接口去访问数据。 ? 增强代码的可维护性。
使用get和set方法封装私有数据
? get和set方法一般是用来给类的成员变量赋值的,set表示设臵值,get表示获取值。由于类的成员变量一般会声明为private的,其他类是不能直接访问成员变量的,所以为了在类以外给该类的成员变量赋值或者取值,只有用声明为public的setXxx()和getXxx()方法来实现,这些方法可以对参数的数值进行安全检查。如果编写了一个原型类,又按照这种封装类的要求把它封装好了,这样的类就叫做Java的组件,即JavaBean。
? 3. 注意:setXxx()和getXxx()方法要按照规定命名,不能随意编写。方法前半部分必须是get
或set,后半部分是属性名,属性名首字母必须要大写。4.在MyEclipse中自动生成get和set方法在MyEclipse中先定义好字段后,在要写get和set方法的位臵单击鼠标右键,打开快捷菜单,选择?Source”——” Generate Getters and Setters”选项,可以根据选择自动生成这些方法。
? 自动统计人数(类成员)
1 public class Person_s { 2 3
private String name; // 实例变量,私有的 private int age; // 实例变量,私有的
4 static int count = 0; // 类变量 5 Person_s(String n, int a) { 6 7 8
name = n;
age = ((a > 0) & (a < 150)) ? a : 0; count++;
9 }
10 public static void print_count() // 类方法,只能访问类变量 11 { 12
System.out.println(\ \
13 } 14 15 16 17
public void print() // 实例方法 { // 可以访问类变量和实例变量 print_count(); // 调用类方法
System.out.println(name + \
18 } 19
public void finalize() // 析构方法
20 { 21
count--;
22 } 23 }
24 class Person_sTest {
25 public static void main(String args[]) { 26 Person_s p1 = new Person_s(\27 p1.print_count(); // 通过对象调用类方法 28 p1.print(); // 通过对象调用实例方法 29 Person_s p2 = new Person_s(\30
p2.print();
31 System.out.println(\共有 \个对象.\32
p1.finalize(); // 调用对象的析构方法
33 System.out.println(\调用析构方法后还有 \个对象.\
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库Java学习资料,ppt,复习资料(6)在线全文阅读。
相关推荐: