一、java的三大特性
1、继承:继承是为了重用父类代码
2、多态:程序中 定义的引用变量 所指向的具体类型和 通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定
3、封装:隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。
二、细说三大特性
1、封装:
从上面封装的定义可以看出,封装是为了“隐藏”一些东西,那么隐藏的是什么呢?又该如何隐藏呢?
(1)隐藏的是什么?-->细节
所谓细节,即实现的细节。
(2)如何隐藏呢?(getter and setter)
a、成员变量的隐藏:将成员变量设置为private,不允许从外部直接操作成员变量;
b、方法的暴露:既然不允许从外部直接操作成员变量,那么就需要提供对外的方法,可以让在其他地方修改成员变量。
那么封装的好处是什么呢?
(1)隐藏实现细节,“外人”无需了解内部的实现。
(2)“外人”只能通过我们提供的对外方法进行变量的操作,我们可以在对外方法中做特定的检查和限制。
(3)对于内部的修改,“外人”无感知。
2、继承:
继承是在已有的类的基础上,建立新类的技术手段;新类可以使用父类中已有的方法或功能,当然新类也可以在父类的基础上进行功能的扩展。(is -a)
通过继承,可以非常方便的复用之前的代码;大大提供开发效率。
继承的具体特性:
(1)子类拥有父类非private的方法和变量使用权。
(2)子类可以拥有自己的方法和变量,即在父类的基础上进行扩展。
(3)子类可以用自己的方式实现父类已有的方法(重写)
这里说明一下重写和重载的区别:
重写:重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写
重载:重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
(4)向上转型:子类对象指向父类引用。
3、多态:
什么是多态呢?--同一个行为具有多种不同表现形式或者能力。
继承(重写)、接口、重载是实现多态的三种方式:
(1)继承的实现
a、子类必须继承父类
b、必须有重写
c、父类引用指向子类对象(向上转型)
(2)接口的实现
a、多个类均实现了某个接口
b、各个类实现自己的细节
c、接口引用指向子类对象
(3)重载
其实重载是调用了“不同”的方法(参数不同或者返回值不同)
注:重载在编译器就会根据参数的类型或者返回值来决定重载方法的版本;而重写在运行期才能决定接收者的实际类型。