封装:告诉我们如何正确的设计对象的属性和方法。
对象代表什么封装对应的数据,提供数据对应的行为方法。
将对象的属性隐藏在对象内部,不允许外部对象直接访问,但提供一些被外界访问的方法来操作属性。
封装的好处:
1.使得编程变得简单,降低了学习成本,
比如string类似对字符串造作的类,内部就封装对字符串操作的相关方法,当我们需要时直接调用就行了。不需要去管具体的实现步骤,这也是面向对象的一种体现吧。
2.数据安全性,为被private封装的属性,会被对象直接赋值,有可能传入非法·数据,当使用private对数据进行修饰,对外提供的方法就可以对相关数据进行逻辑处理,判断其合法性。
例:一个人的年龄是大于等于0,但未封装的变量,赋的初值就有可能为负数。
继承:对已存在类的基础上建立新类的技术。新类可以有新的数据与功能,也拥有父类的功能。
为什么要有继承:不同类型的对象,相互之间经常有一定数量的共同点:使得代码重复使用。
例:不同的学生都有学生的共同特性,班级,学号。但每个学生又有自己不同于别人的特性。
通过继承,我们可以快速创建类,提高代码的重用,节省创建类的时间,提高我们的开发效率。程序的可维护性。
特点:
- 子类拥有父类的所有属性,方法,但是私有属性,方法拥有,无法访问
- 子类可以拥有自己特有的属性与方法,这就是对父类的扩展。
- 子类可以重写父类的方法。
多态:一个对象的多种形态,父类的引用指向子类的对象实例。
多态前提:
- 有继承
- 有父类引用指向子类对象
- 要有方法重写。
好处:
使用父类作为参数,可以接受任何子类对象,从而体现多态的扩展性与遍历
多态调用成员的特点:
- 对于成员变量:编译看左边,运行也看左边
当父类中存在的变量,子类中也存在,会调用父类中变量,
对父类中不存在的变量,子类中存在,编译其会报错,因为不去子类中找。
- 对于成员方法:编译看左边,运行看右边
当父类中存在的方法,子类进行了重写,运行时调用的是子类的方法
当父类中不存在的方法,子类存在,编译时会报错。
多态的优势:
多态形式下,右边对象可以实现解耦,便于扩展和维护。
定义一个方法时,使用父类作为参数,可以接受所有子类对象,体现多态的遍历。
多态的弊端:
不能调用字类的特有功能,子类独有的方法
解决:在变回子类类型就可以了
instanceof:关键字,判断传入的变量是不是某一类型
jdk14是添加了新特性: