java里面的面向对象编程有关于封装继承通俗讲是什么意思

如题所述

封装会对类的成员变量加上绝对领域,因此没有人能够恶搞你的变量。
比如一个类:Dog
class Dog {
int height;
}
当然我们可以指定这只狗的高度: new Dog().height = 34;
但是绝对不应该:new Dog().height = 0; 因为狗的高度能是0么?刚出生也不能是0啊!但是这个错误是有可能发生的,因为这个成员变量height可以任意的被修改和访问。
所以,封装的基本原则:
将你的成员变量标记为私有的,并提供公有的get和set方法来控制存取动作。
class Dog {
private int height;

public int getHeight() {
return this.height;
}
public void setHeight(int h) {
if(h > 5) { // 此检查可以确保高度不会低于5
this.height = h;
}
}
}
这回明白了吧?但是有的时候你会发现,好多情况,我们确实把属性设置为私有的,而且也提供set和get方法,但是方法内部什么都没做,只是简单的赋值或者返回属性值,这不是和以前一样也可以任意更改了么?,这里告诉你为什么,这种方式已经形成了一种规范,可能这样做暂时看似没什么用,但是是一个标准规范,应该这样去做,因为此时可能我们不想去做些什么,但是以后呢?以后想做直接在方法内部添加判断即可,这时候其他调用了此方法的地方并不需要改变,维护性比较好。

也就是说,除非你是刻意的想让外界直接可以任意访问,否则,我们要尽可能的将属性设置为private私有的,对于方法也是一样,有些方法就是我这个类自己内部调用,内部有用,那我就设为private的,这个具体得根据实际情况分析设计,好处除了上面所述,还有就是 你对外只提供有效的属性或方法,其他的进行隐藏,那么之后,谁使用你这个类,谁调属性或者方法的时候后都会明确的知道,这些对我都是有用的。

当然访问权限修饰词,private,默认的,protected,public 四种,具体用那一种进行修饰,根据实际情况自己看。

封装的目的是增强安全性和简化编程,增强安全性上面说过了,简化编程也就是说,使用者不必了解具体的实现细节,而只是使用 外部接口(方法名和参数列表)就可以了。

再说继承:
继承是类与类之间的关系,class Cat extends Animal 意思就是说猫从动物继承,那么动物被叫做父类,猫被叫做子类,猫类和动物类,这两个类之间的关系是继承关系。
有了继承关系之后,作用之一 就是代码重用,子类从父类继承,那么父类的所有内容(属性和方法),子类无需再次定义就都拥有了,全部都拥有了,但是有些内容比如说 private的属性,拥有是拥有了,但是不能使用,说白了就是有拥有权,没有使用权。
另外一个作用就是继承以后,可以父类引用指向子类对象,也就是向上转型(upcasting),比如:
Animal a = new Dog();
继承了以后,还可以对父类的方法进行重写(Override)。
最重要的一点就是:继承,重写,向上转型,是多态的3个必要的条件,缺一不可。

面向对象的三个特性:封装、继承、多态,多态从另外一个角度,划分开了接口和实现,使我们程序的可扩展性达到了极致,现在明白了吧?之所以现代编程语言都采用面向对象的思想,原因就是这样的程序,代码的重用性,程序的可扩展性,后期的可维护性,以及其他其他的什么什么性 都是非常好的。
我也就理解这么多,写了一个小时,以上绝非复制粘贴,可能我说的也不全面,毕竟就理解到这,自己再看看书吧。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-07
封装的概念好比一辆汽车,你学开车的时候只需学会诸如踩油门、刹车,转方向盘即可,无需去了解它的发动机是如何发动。

继承,先说说我对类的理解,类起到的作用有:分类(你所用某个类创建的对象实际上该类的个案)和模板的作用,那么继承则起到了对类再次分类的作用,比如,有个类“动物”,“哺乳动物”继承“动物”,再往下“马”又继承了“哺乳动物”这个类。在这里,我们从下往上讲,首先,我们把某种东西划分出来,叫做“马”(当然还有“牛”,“鱼”等等),接着,我们发现,“马”,“羊”等还有很多共同的特点,于是,我们再次划分出了“哺乳动物”这个类,再次分类,我们则有了“动物”。但在实际开发中,我们一般是从上往下定义的,即先有了“动物”,再有“哺乳动物”,最后有“马”。
第2个回答  2013-11-07
封装好比用电脑,你虽然不知道电脑是怎么做的,你会用就够了,具体的部件和工作原理就相当于程序中被装起来的代码.继承更简单,为什么孩子总是和父母有类似的地方呢?和人类的特征遗传和相似
相似回答