所有面向对象语言的三个最基本特征:封装 继承 多态
Java语言的三大特性
1、封装:
- 将某些东西包装在一起,然后以新的完整形式呈现出来;
- 隐藏属性、方法或实现细节的处理方式称为封装;
- 封装其实就是有选性地公开或隐藏某些信息,它解决了数据的安全性问题。
封装是对事物进行包装。封装会造成事物的部分细节被隐藏。在Java中通过关键字 public、protected、默认(无修饰词)和private 实现封装。
[ 封装可以被认为是一个保护屏障,定义程序如何引用对象的数据,控制用户对类的修改和访问数据的程度,实现将对象的信息隐藏在对象内部,禁止外部程序直接访问对象内部的属性和方法。]
- public修饰词,表示成员是公开的,所有其他类都可以访问(在java中属于最大的访问权限);
- protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问;
- 无修饰词,表示包访问权限,同一个包内可以访问,访问权限是包级访问权限;
- private修饰词,私有的 访问范围只能在本类中使用 (在java中属于最小的访问权限);
封装的步骤:
- 使用 public、protected、默认(无修饰词)和private 关键字来修饰成员变量。
- 对需要访问的成员变量,提供对应的一对 getXxx方法 、setXxx 方法。
2、继承:
- 继承就是重用现有的类来生成新类的一种特征;
- 通俗地讲就是从现有的类(即父类或基类)创建新类(子类或派生类)的过程;
- 现实生活中,继承可以达到财产重用的目的,而在Java中,继承可以使代码重用。
- 举例:引用地址
先说说我对类的理解,类起到的作用有:分类(你所用某个类创建的对象实际上该类的个案)和模板的作用,比如,有个类“动物”,“哺乳动物”继承“动物”,再往下“马”又继承了“哺乳动物”这个类。在这里,我们从下往上讲,首先,我们把某种东西划分出来,叫做“马”(当然还有“牛”,“鱼”等等),接着,我们发现,“马”,“羊”等还有很多共同的特点,于是,我们再次划分出了“哺乳动物”这个类,再次分类,我们则有了“动物”。但在实际开发中,我们一般是从上往下定义的,即先有了“动物”,再有“哺乳动物”,最后有“马”。
3、多态:
- 多态是指同一函数在不同的类中有不同的实现;
- 多态的好处就是使类更加灵活,更便于扩充。
- 举例:引用地址
假设有一个类 叫 鸟类,它拥有属性 翅膀,拥有方法 鸣叫,如下:
public class Bird{
private Wing wing;
public void moo(){
System.out.println(“鸟叫声”);
}
}
鸟类封装了 翅膀类和moo方法;另外有两个类都继承鸟类并重写了moo方法,分别是鹦鹉和麻雀,如下:
鹦鹉类:
public class Parrot extends Bird{
public void moo(){
System.out.println(“鹦鹉的叫声”);
}
}
麻雀类:
public class Sparrow extends Bird{
public void moo(){
System.out.println(“麻雀的叫声”);
}
}
方法重写应该懂吧,不懂自己找书看吧;然后你有个妻子她想听鸟叫,就有个妻子类
public class Wife{
public void listen(Bird bird){
bird.moo();
}
这时多态就很好的体现了,你妻子想听鸟叫,无论什么鸟都可以给她,但是你想让她和鹦鹉说话,你就买了一只鹦鹉传给listen方法,结果你妻子听到了鹦鹉的叫声,程序输出:鹦鹉的叫声
public static void main(String[] args) {
new Wife().listen(new Parrot());
}
}
多态实现了动态绑定,让程序有了很好的扩展性,比如你以后想买一只燕子送给你妻子,就只需要写个燕子类Swallow继承Bird方法就可以了,而不需要再在妻子类里添加一个方法listen(Swallow swallow)
总结:
- 封装:控制权限
- 继承:重写父类
- 多态:方法重载和方法重写