Java语言的三大特性
(1) 封装
属性可以用来描述同一类事物的特征,方法可以描述同一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性和方法)归到一个类中,以方便使用。
封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说用户不需要知道内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。
优点:第一,实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,可以在需要的时候调用,从而实现了专业的分工。第二,隐藏信息,实现细节。通过访问控制权限可以将不想让客户端程序员看到的信息隐藏起来,比如客户的银行密码需要保密,只能对客户开放权限。
(2) 继承
就是个性对共性的属性与方法的接受,并加入个性特有的属性与方法
概念:一个类继承另一个类,则称继承的类为子类,被继承的类为父类。
目的:实现代码的复用。
理解:子类与父类的关系并不是日常生活中的父子关系,子类与父类是一种特殊化与一般会的关系,是is-a的关系。子类是父类的更加详细的分类,如Class dog extends animal,可以理解为dog is a animal。需要注意继承的时候如果让某个类能继承,父类需适当开放访问权限,遵循里氏代换原则,即向修改关闭对扩展开放,也就是开闭原则。
结果:继承后子类自动拥有了父类的属性和方法,但是注意父类的私有属性和构造方法并不能被继承。
(3) 多态
多态是以继承和封装为基础的。多态就是在抽象的层面上实施一个统一的行为,到个体(具体)层面上时,这样统一的行为会因为个体(具体)的形态特征而实施自己的特征行为。(针对一个抽象的事,对于内部个体又能找到其自身的行为去执行。)
概念:相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
理解:子类以父类的身份出现,但做事情时还是以自己的方法实现。子类以父类的身份出现需要向上转型upcast,其中向上转型是JVM自动实现的,是安全的,但向下转型是不安全的,需要强制转换。子类以父类的身份出现时自己特有的属性和方法将不能使用。