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却不可以,这就是对象多态。

说到多态,就要提一下编译期绑定和运行期绑定了。或者叫编译类型和运行类型。编译期绑定又叫前期绑定,运行时绑定又叫后期绑定。

对象的多态就是因为编译时的绑定,对象类型是编译类型,编译类型由声明该类型的引用决定,不同的声明就绑定不同类的属性。

行为的多态就是运行时绑定,运行时类型由给该变量赋值的类型决定,就是等号右边的值。赋不同的值,就会出现不同的行为。

动态绑定是针对方法的,对属性无效,因为属性不能被重写。

多态:调用看引用,实现看指向.

 

posted @ 2018-05-03 00:09  苦心明  阅读(145)  评论(0)    收藏  举报