当前位置:   article > 正文

JAVA面向对象的三大特性_java面对对象的三大特征

java面对对象的三大特征

前言

     当我们要理解面向对象的三大特性时,需要了解类和对象的概念,那么什么是类?什么是对象?什么是面向对象呢?

  • 什么是类?
    • 在现实生活中,类可以比作一类人,一类植物,总体来讲类是一个抽象的,只是一个概念,放在程序中,类就是一组具有相同特性(属性)和行为(方法)的事物集合. (属性指名词,行为指动词)
  • 什么是对象?
    • 对象是类的实例,是真实存在的,比如人类里有一个叫张三的人(对象),而这个对象属于这个类,每个对象都有自己的特性和行为。
  • 类和对象的关系
    • 老话讲,类是一个模板,对象是类的实例。
  • 什么是面向对象?
    • 面向对象就是将事物拆解成各个对象,进行封装。
    • 优点 : 易扩展,复用率高。
    • 缺点: 为程序增加了一定的系统开销(如: 创建多个对象)。

一、封装

  1. 什么是封装?

     封装是面向对象的三大特性之一,通过私有化属性,get/set方法来控制信息,实现信息隐藏,不允许外界访问。
  2. 好处

    1. 具有安全性和复用性
    2. 隐藏了类的实例细节,方便修改和实现
  3. 用法   

    1. 将属性私有化
    2. 创建get(取值)/set(赋值)方法
    3. 可以在set方法中对属性增加控制语句
  4. 示例

  - 只有调用get方法才可以得到该属性,直接获取将无法调用,安全性高。

  1. Class Student
  2. {
  3. private String name;
  4. public void get()
  5. {
  6. //返回值
  7. return name;
  8. }
  9. public void set(String name)
  10. {
  11. //对属性赋值
  12. this.name=name;
  13. }
  14. }
  15. public static void main(String[] args)
  16. {
  17. //创建对象调用
  18. Student stu=new Student();
  19. //为属性赋值
  20. stu.set("张三");
  21. //获取值
  22. System.out.println(stu.get());
  23. }

二、继承

  1.  什么是继承?

       继承是面向对象的三大特性之一,分为父类和子类,子类继承父类,具有父类相同的特征和行为。
  2. 好处

    1. 不必要再去创建每个类中创建共同的代码
    2. 能够减少代码冗余
  3. 语法

      1.     访问修饰符  class <subClass> extends <superClass>
      2. {
      3.             //代码体
      4.      } 
    1. 子类又名派生类,父类又名基类/超类
    2. 子类无法继承父类private修饰的属性和方法
    3. 不论子类和父类是否在同一个包中,public 和都可以继承父类的属性或方法
    4. 被默认修饰符修饰的属性或方法可以被继承,前提是子类和父类必须在一个包中
    5. java中的继承是单继承,即一个类只有一个父类
  4. 关于Object

    1.  在Java中object类是所有类的祖先,所有类默认情况下都是Object类的子类。
    2. 所有的类都直接或间接的继承object类(不论有继承还是没有)
  5. 继承中的方法重写

    1. 什么是方法重写?
      1. 如果父类中继承的方法不正确或不满足子类的需求时,则在子类中就可以对父类的同名方法进行重写(覆盖)。
      2. 继承的前提下,才可以对方法进行重写(父子类中)
    2. 规则 

      1. 子类中的重写方法名称、返回值类型、参数列表都必须跟父类中的相同

      2. 重写方法的访问权限不能低于父类中的权限  

  6. super关键字

    1. 定义:   super是一个对父类对象的默认引用

    2. 语法

      1. --访问父类构造方法 super(参数)
      2. --访问父类属性/方法 super.<属性/方法>
    3. 作用 : 通过super在父类调用父类属性,方法及构造方法

    4. 注意

      1. 在类的构造方法中,super只能是第一条语句

      2. 在实例方法中,this和super可以共存(不要求是第一条)

      3. 在静态方法(类方法)中不允许出现super或this关键字

  7. 继承中的构造方法

    1. 子类无法继承父类的构造方法
    2. 如果父类没有无参构造方法,必须显示的调用父类的有参构造方法
    3. 不论父类中有没有无参构造方法,如果使用super调用带参构造方法的话,就会执行父类的带参构造方法 ,否则默认调用无参。

三、多态

  1. 什么是多态

       多态是面向对象的三大特征之一,来实现对象的多种状态,使用同一个引用类型通过指向不同的实例,得出不同的结果。
  2. 实现多态

    1. 向上转型(子类到父类的转换)

      1. 概念:   将一个父类的引用指向一个子类的实例被称为向上转型(自动转换)。

      2. 语法

        1. <父类型> <引用变量名> = new <子类型>();
        2. --Animal animal=new Dog();
      3. 规则

        1. 父类引用变量无法调用子类特有的方法

        2. 通过父类引用变量调用的不是父类中的方法,而是子类中重写的方法或继承的子类方法。

    2. 向下转型(父类到子类的转换)

      1. 概念: 通过父类到子类的向下转换可以实现多态调用不同子类中定义的特有方法。

      2. 语法

        1. Pet(父类) instanceof Dog(子类)//来检验指向的子类是否正确,避免转换出现异常
        2. {
        3. //将父类强制转为子类
        4. Dog dog =(Dog)pet;
        5. }
      3. 作用 : 调用子类中特有的方法。

      4. 注意 : 如果在向下转型时没有转换为真实的子类类型就会发生异常,用instanceof运算符来解决

  3. 实现多态的形式

    1. 使用父类作为方法形参
      1. 将父类引用指向子类实例
      2. 直接在方法里填写子类,实现自动转型
    2. 使用父类作为方法返回值
  4. 实现多态的条件

    1. 必须存在继承关系(没有继承就没有多态)
    2. 子类重写父类的方法(多态下调用子类重写的方法)
    3. 父类引用变量指向子类对象(向上转型)
  5. 多态的优势

    1. 可替换性
    2. 可扩展性
    3. 灵活性
    4. 简化性
  6. 注意

    1. 子类不可以强制转换为另一个子类
    2. 可以直接在实参里写子类引用(因为在传入形参时,类型自动转为了父类)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/237728
推荐阅读
相关标签
  

闽ICP备14008679号