您的位置:首页 > 编程语言 > Java开发

Java面向对象之类和封装

2013-09-06 21:31 351 查看
今天复习了下Java面向对象的封装,下面分享下我的复习心得!

1.使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗?

2.在Java程序中,代码封装带给我们的好处是什么?

下面我通过两个简单的例子来回答这两个问题

第一题:编写一个类,代表老师,要求:

具有属性:姓名、年龄

具有行为:自我介绍

老师的最小年龄要求:22岁

package study;

public class Teacher {
/*
* 封装就是将属性私有化,增加了数据访问限制,增强了程序的可维护性
*/
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
/*
* 限制年龄
*/
if(age<22){
System.out.println("错误!最小年龄应该为22!");
this.age=22;
}else{
this.age = age;
}
}
public String jieshao(){
return "大家好!我叫"+name+";我今年"+age+"岁!";
}
public static void main(String[] args) {
Teacher t=new Teacher();
// t.name="孔子";
// t.age=56;
t.setName("老子");
t.setAge(15);
System.out.println(t.jieshao());
}
}通过上面这个例子,可以看出代码封装可以限制数据访问,提高了代码的可维护性!回答了第二问。
第二题:编写一个类,代表学生,要求:

具有属性:姓名、年龄

具有行为:自我介绍

学生的最大年龄要求:21岁

package study;

public class Student {
public String name;
public int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>22){
System.out.println("错误!学生年龄小于22!");
this.age=18;
}else{
this.age = age;
}
}
public String jieshao(){
return "大家好,我叫"+name+",今年"+age+"岁!";
}
public static void main(String[] args) {
Student s=new Student();
s.setName("jack");
s.setAge(25);
System.out.println(s.jieshao());
Teacher t=new Teacher();
t.setName("tom");
t.setAge(18);
System.out.println(t.jieshao());
}
}


从代码中可以看出Teacher类和Student类都在study包中,Teacher类用private修饰属性,Student用public修饰属性。同时可以看出第二题调用了Teacher类,即可以被同一包中的其他类访问。下面输出结果:
错误!学生年龄小于22!

大家好,我叫jack,今年18岁!

错误!最小年龄应该为22!

大家好!我叫tom;我今年22岁!

从结果也可以看出使用了封装可以限制老师和学生的年龄。亲们,我讲的对么
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息