类和“对象” 以及 面向对象的三大特点
一、类和“对象”:
类是一种抽象出来的,可以说是对某些事物的概括他们属性、行为的集合。可以很抽象,也可以具体一点,比如:动物类,就可以包含哺乳动物、软体动物、鸟类、鱼类···。我们从中又可以拿出比动物类具体一点的哺乳类,包含着犬科类、猫科类···。还能在具体,比如猫科类还可以再分为好多类。各种类都有其行为和属性。类在我们生活中无处不在,但却是一种抽象的存在。而我们能直接接触到的就是“对象”,
对象是类的实例,是一个“东西”,它真真实实的存在。比如你有哥哥、弟弟,家里总共三个男孩。当你们三个都在时,假如你的爸爸喊了一声“儿子”,你清楚他是在喊你,还是哥哥又或者弟弟呢?举一个不太恰当的例子,“儿子”就属于一个类,当他含你的名字或者哥哥的名字时,你就明白了他在呼唤谁,而这里的“你”或者“哥哥”就属于对象了。
二、面向对象的三大特点:
1、封装:
封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接使之与外部发生联系。系统的其他对象只能通
过包裹在数据外面的已经授权的操作来与这个封装的对象进行交流和交互。也就是说用户无需知道
对象内部的细节,可以通过该对象对外提供的接来访问该对象。
封装的好处:封装之后就形成了独立实体,独立实体可以在不同的环境中重复使用,显然封装可以降低程序的耦合度,提高程序的扩展性,以及重用性或复用性。对外只提供了简单的安全的操作入口,所以封装之后,实体更安全了。
2、继承:
来看看我们现实生活中的继承:
继承时子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性,或子类从父类继承方法,使得子类具有与父类相同的行为。兔子和羊于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又属于动物类。所以继承需要符合的关系是: is-a (Bird is-a Animal),父类更通用,子类更具体。虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性,也会具有自身的特性。
继承的好处:
在不同的类中也可能会有共同的特征和动作,可以把这些共同的特征和动作放在一个类中, 让其它类共享。因此可以定义一个通用类,然后将其扩展为其它多个特定类,这些特定类继承通用类中的特征和动作。继承是Java 中实现软件重用的重要手段,避免重复,易于维护。
值得注意的是:
1)Java中只有单继承,没有多继承,即一个类只能有一个“父类”。要实现多继承可以使用接口。
2)java中规定,子类继承父类,除构造方法和被private修饰的数据不能继承外,剩下都可以继承。
3)java中的类没有显示的继承任何类,则默认继承Object类,Object类是java语言提供的根类,也
就是说,一个对象与生俱来就有Object类型中所有的特征。
3、多态:
它的前提是封装形成独立体,独立体之间存在继承关系,从而产生多态机制。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是“同一个行为”发生在“不同的对象上”会产生不同的效果。我们来看看下面代码:
Cat类和Bird类同时继承自Animal类。我们对上面的类进行测试:
其实Cat对象和Bird对象还可以像这样来创建:
以上代码编译是会报错。我们只要记住,编译看左边,运行看右边就可以避免这样的问题。
如果对上文编程基础知识点有不懂的地方可以戳视频链接补下课
多态存在的三个必要条件分别是:
● 继承
● 方法覆盖
● 父类型引用指向子类型对象