Java的三大特性?(或者四个特性)
1.封装:
封装的体现形式:函数,属性的私有化;
为了防止在类外直接操作属性的时候给属性赋值一些不符合常量的值,因此将属性私有化,提供了对外的访问方法来间接的操作属性---属性私有化保护了数据的安全性;
优势:提高了代码的复用性,提高了代码的安全性
2.继承
定义: 如果一些类中有一些共有的方法和属性,将这些方法和属性提取出来放到一个新的类中,然后利用extends关键字让原来的类和新的类产生联系---继承。新的类称之为父类(超类,基类),原来的类称之为子类(派生类);
在Java中支持的是单继承,一个子类只能有一个父类,而一个父类可以有多个子类;
Java中支持多层继承;
优点:提高了代码的复用性,使方法的调用更加安全
3.多态
定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,在运行时,可以通过指向父类的指针,来调用实现子类中的方法
多态的三个条件:1.要有继承2.要有重写3.父类引用指向子类对象
编译时多态:函数的重载
运行时多态:函数的重写 向上造型---基于继承
行为多态:函数的重载和重写
对象多态:向上造型
Animal a = new Lion();---在编译时期并不会真正的关心是哪个具体的子类,在运行的时候需要确定是哪个具体的子类以分配空间
注意:向上造型用父类声明用子类初始化---由于这个对象是父类声明的,所以对象能够干什么需要看父类;由于是用子类初始化,具体怎么干要看子类
4.抽象
定义:当子类中有一些共有的但是细节不同的行为的时候,可以对这些行为进行抽取,将这些行为抽取到父类中以抽象方法的形式展现。
抽象方法所在的类一定是抽象类
抽象类不能实例化,但是有构造方法
抽象类中可以有抽象方法也可以没有抽象方法
抽象方法可以重载吗?---可以
抽象方法可以用static/final修饰吗?---不可以 静态不能被重写,静态超脱对象,Final不可被重写
抽象方法可以用private修饰吗?---不可以
抽象方法可以用默认权限修饰吗?---可以---父子类必须同包