JAVA面向对象的三大特性

xiaoxiao2021-02-28  144

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();)

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

多态参数

某类的方法参数为父类、接口,支持传入子类或者是实现类多态环境下的对象造型 向上转型,自然转型,小转大向下转型,强制父类引用向下转型,大转小
转载请注明原文地址: https://www.6miu.com/read-18456.html

最新回复(0)