Java面向对象三大特征
封装
假设所有属性方法,等等等等/都杂乱无章的摆放在哪儿,
封装就是,抽取相同或者有关联的部分,把行为封装为方法,把特征封装成属性。然后包起来。就好像那 眼睛/鼻子/嘴/等封装成人的属性,把吃饭睡觉打豆豆封装成方法。怎么感觉是由对象抽类的过程呢。取摘点网上的把,自己还是不适合总结,慢慢来把。
封装的优点
-
1. 良好的封装能够减少耦合。
-
2. 类内部的结构可以自由修改。
-
3. 可以对成员变量进行更精确的控制。
-
4. 隐藏信息,实现细节。
封装的优点,摘自菜鸟教程
就是把公共的/相同的/类似的抽出来封装一起,减少代码的耦合。这样到时候修改封装里面内容的时候不用修改其它地方。对封装类里面属性和方法可以更好的控制。
继承
继承,用一个关键字extends继承,一个子类只能有一个直系父类。
子继承父,可以获取父类除非私有,构造意外的所有属性和方法。
多态
个人比较喜欢多态,当然也不会告诉你我喜欢多多点还是喜欢态多点的
多态是同一个行为具有多个不同表现形式或形态的能力。(注:此话是以中间人身份说的,个人理解)
多态的优点
- 1. 消除类型之间的耦合关系
- 2. 可替换性
- 3. 可扩充性
- 4. 接口性
- 5. 灵活性
- 6. 简化性
多态存在的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象
以上多态介绍,摘自菜鸟教程。
下面是自己理解。
多态分为,行为多态和对象多态。
行为多态:相同引用指向不同对象会产生不同的行为。
对象多态:不同引用指向相同对象会产生不同的对象。
举个例子:
先新建两个类,因为英语差,就拿知乎上的两个类了,就是简单的父子类
class Animal{ int num = 10; static int age = 20; public void eat() { System.out.println("动物在吃饭"); } public static void sleep() { System.out.println("动物在睡觉"); } public void run() { System.out.println("动物在奔跑"); } }
class Cat extends Animal{ int num = 80; static int age = 90; String name = "tomCat"; public void eat() { System.out.println("猫在吃鱼"); } public static void sleep() { System.out.println("猫在睡觉"); } public void catchMouse() { System.out.println("猫在抓老鼠"); } }
然后测试类,测试行为多态:
public void test01() { //行为多态 Animal am1 = new Animal(); Animal am2 = new Cat(); am1.eat(); am2.eat(); }
运行结果为:

然后测试类,测试对象多态:

因为报错,就不运行了,cat2可以调Cat类的属性,而Animal却不可以,这就是对象多态。
说到多态,就要提一下编译期绑定和运行期绑定了。或者叫编译类型和运行类型。编译期绑定又叫前期绑定,运行时绑定又叫后期绑定。
对象的多态就是因为编译时的绑定,对象类型是编译类型,编译类型由声明该类型的引用决定,不同的声明就绑定不同类的属性。
行为的多态就是运行时绑定,运行时类型由给该变量赋值的类型决定,就是等号右边的值。赋不同的值,就会出现不同的行为。

动态绑定是针对方法的,对属性无效,因为属性不能被重写。
多态:调用看引用,实现看指向.

浙公网安备 33010602011771号