面向对象的三大特性

Posted shamao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象的三大特性相关的知识,希望对你有一定的参考价值。

摘抄:本文主要介绍了面型对象的三大特性,以及五大基本原则。

封装

什么是封装

封装,就是指一个类隐藏了对象的属性和实现细节,对自己的数据和方法进行访问权限控制,只允许某些类和对象进行访问和使用,其他的类不能进行访问和使用。

封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。

在一个类的内部,某些代码或某些数据是私有的,不能被外界访问。通过这种方式,类对内部数据提供了不同级别的保护,以防止类中的私有数据被外部程序窃取和改动。

有什么好处

良好的封装能够减少耦合。耦合,指的是模块间的关联程度,封装可以使模块变得更加独立,降低了耦合度。

封装后的类,在类内部可以自由修改代码,不会影响外部的代码。

对类的成员进行精确的访问控制。

访问控制

public:公共访问权限。属性可以被所有类和对象访问,没有进行封装。

private:私有访问权限。只能在这个类中被访问,对属性和方法进行彻底的封装。

protected:继承访问权限。可以被子类访问,封装的不彻底。

一般来说,如果类中的某个属性不是公有的,而外部程序又需要访问,那么可以提供一个公有的方法,外部程序可以通过调用方法实现对该属性的间接访问。

继承

什么是继承

继承,指的是子类可以获得父类的属性和方法,并且可以在不影响父类代码的前提下,在子类里面对继承的方法进行改写,扩展添加父类里面没有的方法。

Java的继承是单继承,一个父类只能有一个子类,一个子类也只能有一个父类。

有什么好处

子类可以直接使用父类的属性和方法,不需要重复编写代码,提高了代码的可重用性。

特点

Object类是所有类的基类,所有的类都直接或间接继承了Object类,所以具备Object类的方法。

子类不可以继承父类的构造方法,但子类必须调用父类的构造方法。

子类的构造方法中默认调用父类的无参构造,如果父类没有无参构造,报编译错误。

子类用super调用父类的有参构造方法。

多态

什么是多态

多态,是指一个方法或一个对象具备多种表现形式。

多态的体现

多态主要变现在两个方面:引用多态和方法多态。

引用多态,即对象的向上转型,父类的引用指向子类的对象。

方法多态,即子类重写了父类的方法,子类在调用该方法的时候调用的是子类重写的方法,父类在调用该方法的时候调用的是父类的方法。

如果我们在子类中扩展了一个父类没有的方法,就不能通过父类的引用创建的子类对象来调用该方法。

引用类型转换

向上类型转换(自动类型转换): Animal animal = new Dog(); 。

小类型转换成大类型。

子类创建的实例指向父类的引用

向下类型转换(强制类型转换): Dog dog = (Dog) animal; 。

大类型转换成小类型,有可能导致溢出。

子类的引用指向父类的引用

如果将子类的引用指向父类创建的实例 Dog dog = (Dog) new Animal(); ,在编译时不会报错,但是在运行时会报错。

instanceof运算符

使用instanceof运算符来解决引用对象的类型,避免类型转换的安全性问题。

它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。

在写程序的时候,如果要进行类型转换,我们最好使用instanceof运算符来判断它左边的对象是否是它右边的类的实例,再进行强制转换。

注意

继承是多态实现的基础。

以上是关于面向对象的三大特性的主要内容,如果未能解决你的问题,请参考以下文章

面向对象的三大特性

C语言面向对象(上):面向对象三大特性的实现

面向对象 三大特性 五大原则

什么是php面向对象及面向对象的三大特性

Java面向对象概述和三大特性

Java面向对象概述和三大特性