黑马程序员技术交流社区
标题:
关于封装
[打印本页]
作者:
焚雨成灰
时间:
2014-3-11 09:23
标题:
关于封装
本帖最后由 焚雨成灰 于 2014-3-11 12:08 编辑
封装
就是把不想让人看到或用到的东西隐藏起来;具体做法是把属性私有化,并提供公有的方法访问这些属性。那么封装的破坏该怎么理解,有没有具体的例子
作者:
.......
时间:
2014-3-11 10:38
public class Demo {
public class TestBean {
private String name; // 姓名
private String sex; // 性别
private int age; // 年龄
private String job; // 工作
// 以后只要是设置值的时候 实例化这个类
// 比如设置年龄 那么调用setAge(String age);方法
// 传入年龄值 注意前面是什麽类型 这里为int
// TestBean test=new TestBean();
// String name="张三";
// test.setName(name);
// 设置值后 很复杂的多个属性 便变成了一个简单的JavaBean对象
// 取值也很简单 前提是你已经设置了多项属性的值
// 比如调用年龄 getAge()就可以拿到年龄的值
// 对应其类型 可以这样调用
// TestBean test=new TestBean();
// String name=test.getName();
// 使用JavaBean的好处有 实现MVC结构
// 封装多个属性或对象为一个对象 私有的属性 而共有的方法 大大提高程序安全性
// 。。。等等
public int getAge() {
return age;
}
public String getJob() {
return job;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public void setAge(int age) {
this.age = age;
}
public void setJob(String job) {
this.job = job;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setName(String name) {
this.name = name;
}
}
}
复制代码
作者:
何建明
时间:
2014-3-11 11:22
按毕老师视频里说的,面向对象的另外一个特性 :继承,
继承打破了 封装,因为子类继承父类,子类可以覆盖父类的相同方法,
所以从某种意义上讲 继承打破了封装,
此时就引出关键字 final ,如果一个类 或者一个方法不想被继承或者 覆盖,可以用 final修饰
作者:
l939
时间:
2014-3-11 11:37
继承破坏了封装:
子类继承父类,复习父类,并且可以覆盖父类相同的方法
比如:
class Fu
{
void eat()
{
System.out.println("吃饭");
}
}
class Zi extends Fu//子类继承了父类
{
void eat()
{
System.out.println("吃面");//此时子类复习了父类的功能,并将自己新的方法覆盖了父类原有的方法
}
}
当然,楼主不必担心说父类被覆盖了,父类还有什么用,后面会有讲到 final:最终 它的出现就是用来防止子类覆盖父类的,如果你需要说子类方法和父类一样,那么你就可以用final将父类最终化,子类便只能使用,而不能覆盖父类的功能。
作者:
焚雨成灰
时间:
2014-3-11 12:07
何建明 发表于 2014-3-11 11:22
按毕老师视频里说的,面向对象的另外一个特性 :继承,
继承打破了 封装,因为子类继承父类,子类可以覆盖 ...
原来是这样,正好看到继承那,还没看到final
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2