JAVA面向对象的三大特性

来源:互联网 发布:linux关闭防火墙 编辑:程序博客网 时间:2024/06/03 16:13

JAVA面向对象的三大特性

1、封装

  • 封装性是一种信息隐藏技术
  • 概念: 隐藏对象的属性,仅对外提供公共访问方式
  • 将一组逻辑相关的属性方法封装在类中,通过访问权限修饰符来隐藏内部细节,公开访问的接口的技术称为类的封装技术
  • 隐藏内部细节,保护其不受外部影响,方便内部的修改
  • 同时降低外部使用的复杂度
  • 属性用private隐藏, 提供set方法和get方法来分别为属性设置值或者取得属性值,boolean的get方法使用is开头

2、继承

  • 概念:一个类继承另一个类,则称继承的类为子类,被继承的类为父类,使用extends关键字
  • 目的:实现代码的复用
  • 继承后子类自动拥有了父类的属性和方法,但是父类的私有属性和构造方法不能被子类继承
  • 继承的特点

    • 子类继承父类
    • 只支持单继承,不支持多继承,接口可以多继承
    • 父类的方法子类自动拥有,可以实现代码的重复使用
  • super与this关键字

    • this表示当前对象的引用,super表示当前对象父类的引用
  • 继承与构造方法
    • 子类继承父类,父类的构造方法先执行,子类的构造方法再执行
    • 默认情况下,子类会优先调用父类无参的构造方法
    • 子类调用父类的非默认构造方法,需要使用super关键字并且指定正确的参数类型
    • super调用父类的构造器必须在子类的构造方法的第一行

3、多态

  • 多态的含义
    • 对外一种表现形式,内在有多种具体实现
  • 多态的具体体现
    • 方法覆盖
    • 方法重载
    • 多态参数
  • 编译期类型和运行期类型

    • 编译期类型和运行期类型相同的时候

       A a = new A(); a.show();声明A的时候,使用到的类型A表示对象的类型,被称为编译期类型,在编译期,虚拟机认为a的类型是A,对于a所使用的属性和方法的有效性将到类A中去验证,构造方法A()中的A是运行期类型,在运行期,将执行运行期类型中的方法
    • 当编译期类型和运行期类型当存在继承关系时,可能发生编译期类型和运行期类型不同的情况,即编译期类型是父类类型,运行期类型是子类类型

      //A类是B类的父类                              A  ab = new B();ab.show();对象ab的编译期类型为父类A类,运行期类型为子类B类,如果一个引用的编译期类型和运行期类型不同,那么一定是编译期类型与运行期类型有父类子类关系,或者接口与实现的关系。ab对象使用的方法,在编译期到类A中去校验,而运行则执行B类的方法,如果一个对象的编译期类型是父类,运行期类型是子类,可以对该对象进行强制类型转换,将其编译器类型转换为与运行期类型相同的类型,即:B b=(B)ab;
  • 多态环境下的属性的方法的调用(Parent p = new Child();)

    • 成员方法,运行期调用的是子类的方法
    • 静态同名方法,运行期调用的是父类的方法
    • 属性,运行期调用的是父类的
  • 多态参数

    • 某类的方法参数为父类、接口,支持传入子类或者是实现类
  • 多态环境下的对象造型
    • 向上转型,自然转型,小转大
    • 向下转型,强制父类引用向下转型,大转小