5.面向对象三大特征

2022-04-25  本文已影响0人  星野君

面向对象编程有三大特征:封装、继承和多态。
一、封装

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。

实例:

get/set

public class Person{
    private String name;
    private int age;

    public int getAge(){
      return age;
    }

    public String getName(){
      return name;
    }

    public void setAge(int age){
      this.age = age;
    }

    public void setName(String name){
      this.name = name;
    }
}

idea快捷键:alt+insert

二、继承
继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中 抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过 extends 来 声明继承父类即可。

class 子类 extends 父类{}
  1. 代码的复用性提高了
  2. 代码的扩展性和维护性提高了
  1. 子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问, 但是私有属性和方法不能在子类直接访 问,要通过父类提供公共的方法去访问
  2. 子类必须调用父类的构造器, 完成父类的初始化
  3. 当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无 参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过
  4. 如果希望指定去调用父类的某个构造器,则显式的调用一下 : super(参数列表)
  5. super 在使用时,必须放在构造器第一行(super 只能在构造器中使用)
  6. super() 和 this() 都只能放在构造器第一行,因此这两个方法不能共存在一个构造器
  7. java 所有类都是 Object 类的子类, Object 是所有类的基类
  8. 父类构造器的调用不限于直接父类!将一直往上追溯直到 Object 类
  9. 子类最多只能继承一个父类(指直接继承),即 java 中是单继承机制 (可以使用接口)
  1. 子类重写父类的方法,返回类型、方法名和参数列表必须完全一致。
  2. 子类重写方法不能缩小父类方法的访问权限

三、多态

  1. 多态基于封装和继承的基础之上,
  2. 编译类型定义对象时就已经确定不能改变
  3. 运行内存是可以变化的
  4. 编译类型看=左边,右边是运行内存
public class Animal { public void cry() { System.out.println("Animal cry() 动物在叫...."); } }

public class Cat extends Animal { public void cry() { System.out.println("Cat cry() 小猫喵喵叫..."); } }

public class Dog extends Animal { public void cry() { System.out.println("Dog cry() 小狗汪汪叫..."); } }

public static void main(String[] args) { 
//体验对象多态特点 //animal 编译类型就是 Animal , 运行类型 Dog 
Animal animal = new Dog(); //因为运行时 , 执行到改行时,animal 运行类型是 Dog,所以 cry 就是 Dog 的 cry animal.cry(); //小狗汪汪叫 
//animal 编译类型 Animal,运行类型就是 Cat 
animal = new Cat(); animal.cry(); //小猫喵喵叫 
}

多态的向下转型:

Cat cat = (Cat) animal; 
cat.catchMouse();

向上转型:

Ananimal animal  = new cat();
Object obj = new Cat();
  1. 当调用对象方法的时候该方法会和该对象的内存地址绑定
  2. 调用属性没有绑定机制,哪里声明哪里使用
上一篇下一篇

猜你喜欢

热点阅读