封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。隐藏了细节之后,对于使用者来说,更简单了
好处:
将变量隔离。便于使用。提高重用性。提高安全性。
封装原则:
①将不需要对外提供的内容都隐藏起来。
②把属性都隐藏,提供公共方法对其访问。
函数本身就是一个最小的封装体。类也是一个封装,包也是一种封装,框架也是.
继承
事物与事物之间的关系,并把这种关系给抽取出来,就是继承。
继承特点:
1,提高了代码的复用性。
2,让类与类之间产生了关系。有了这个关系,才有了多态的特性。
注意:
一千万不要为了获取其他类的功能,简化代码而继承。必须是类与类之间有所属关系(即is a 关系)才可以继承。
二 java中之支持单继承,不支持多继承,因为多继承容易带来安全隐患,因为如果继承的多个父类中要是定义了相同功能,但功能内容不同时,不确定要运行哪一个。这就是优化C++的部分(C++支持多继承),从而使java更简单易学,但是java保留了这种机制,并用另一种体现来完成表示,叫实现。
Java 支持多层继承,也就是一个继承体系,
如何使用一个继承体系的功能,————想要使用体系,先查阅父类的描述,因为父类中定义的是该体系中的共性功能,通过了解共享功能,就可以知道该体系的基本功能,那么这个体系已经可以基本使用,
但是在具体调用时,要创建最子类的对象,原因:
一是因为有可能父类不能创建对象,如抽象类,
二是创建子类对象可以使用更多的功能,包括基本的也包括特有的。
简单一句话:查阅父类功能,创建子类对象使用功能。
多态
多态:可以理解为事物存在的多种体现形态。
1,多态的体现:
父类的引用指向了自己的子类对象。换种说法就是:父类的引用也可以接收自己的子类对象。
代码体现:Animal a = new Cat();
2,多态的前提: 必须是类与类之间有关系。要么继承(extends),要么实现(implements)。
通常还有一个前提:存在覆盖。如果不存在覆盖,那么多态就没有意义了,
3,多态的好处: 多态的出现大大的提高程序的扩展性。提高代码的复用性
4,多态的弊端: 虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。不能预先去使用子类,因为那个时候子类还不存在,没有子类,怎么可能去访问? 但是我们应该侧重扩展性。
也就是说: 多态自始至终都是子类对象在做着变化。
函数也具有多态性,重载和覆盖就是具体体现。
在多态中,非静态成员函数中的特点:
在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期:参阅对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态调用时,编译看左边,运行看右边。
在多态中,成员变量的特点:无论编译和运行,都参考左边(也就是参考引用型变量所属的类)。
在多态中,静态成员函数、静态成员变量的特点:无论编译和运行,都参考做左边。静态不覆盖,
静态方法,当你在调用时,静态方法会加载内存中,这个时候是不需要对象,因为静态方法不所属对象,静态本身不访问,不参考对象。