美文网首页
5.面向对象三大特征

5.面向对象三大特征

作者: 星野君 | 来源:发表于2022-04-25 14:11 被阅读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 中是单继承机制 (可以使用接口)
  • 方法重写/覆盖(override)
  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. 调用属性没有绑定机制,哪里声明哪里使用
  • 多态参数
    当方法参数是父类的时候,调用该方法可以传入该父类的任意子类。

相关文章

  • 5.面向对象三大特征

    面向对象编程有三大特征:封装、继承和多态。一、封装 封装的优点 良好的封装能够减少耦合。 类内部的结构可以自由修改...

  • ES6 语法基础3--面向对象

    5. 面向对象编程 5.1 ES5面向对象编程 a. 构造函数 构造函数就是一个普通的函数,但是有自己的特征和用法...

  • 面向对象

    面向对象方法概论 对象、结构 概念呢 特征 1.1 什么是面向对象 面向对象方法的基本思想 对象 属性-静态特征 ...

  • Java基础(二)

    面向对象特征;重载和重写;静态绑定和动态绑定;抽象类和接口;包。 面向对象的特征 面向对象的三个基本特征是:封装、...

  • iOS概念知识

    面向对象的三大特征,并作简单的介绍。 面向对象的三个基本特征是:封装、继承、多态。 1.封装是面向对象的特征之一,...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

  • 面试 | java基础

    面向对象 1、面向对象特征? 封装封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成...

  • 面向对象特征

    ⾯向对象的三⼤特征 封装 , 继承 ,多态 什么是封装 封装隐藏了内部实现细节,只暴露出接⼝ 电灯对象你只...

  • 面向对象特征

    面向对象编程有4个基本特征: 抽象: 抽象就是将一些事物的共性和相似点抽离出来,并将这些属性归为一个类,这个类只考...

  • Java 工程师成神之路 | 2019正式版

    摘要:什么是面向对象 基础篇 01面向对象 → 什么是面向对象 面向对象、面向过程 面向对象的三大基本特征和五大基...

网友评论

      本文标题:5.面向对象三大特征

      本文链接:https://www.haomeiwen.com/subject/dxnrsrtx.html