Java面向对象之类和封装

来源:互联网 发布:崂山道士马思唯 知乎 编辑:程序博客网 时间:2024/05/30 23:08

今天复习了下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岁!

从结果也可以看出使用了封装可以限制老师和学生的年龄。亲们,我讲的对么

原创粉丝点击