Java基础:继承,封装,多态,抽象类,接口

时间:2023-12-05 21:59:50

只要是从事Java语言有关的开发工作,在面试中难念会被问到这几个东西。

博主学习java有两年多了,算是浅显的知道一些,抄写了一些解释分享一下。

1、什么是面向对象?(面对女朋友)

面向对象(Objec Oriented,OO)是一种软件开发方法。

面向对象是专指在程序设计中采用封装、继承、多态等设计方法。

一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。

2、继承

继承是指一个对象直接使用另一对象的属性和方法。

Java只支持单继承,不支持多重继承。即Java 中一个类只能继承于另一个类。

我们将被继承的类称之为父类(基类),继承类称之为子类(派生类)。在Java 中用关键字extends 来实现单继承。

构造方法不能被继承!一个类得到构造构造方 法只有两种途径:自定义构造方法;使用JVM分配的缺省构造方法。

继承带来了三个好处:减少代码冗余;维护变得简单;扩展变得容易。

3、封装

将一类事物的特征和行为定义在一起,可以通过这个定义创建对象,使用对象进行编程

封装是一种信息隐蔽技术它有两个含义,即把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位,以及尽可能隐藏对象的内部结构。

程序里,在属性和方法前面加上private关键字,就表示封闭属性和方法了,只能类的内部访问。

在java中是通过各种访问限定符来实现数据封装的,共分为四种访问级别(由低到高):private(私有)、friendly(缺省)、protected(受保护)、public(公共)。

封装的好处是:模块化,信息的隐藏(安全),可替换

4、多态

多态指同一个实体同时具有多种形式。

重写Overriding是父类与子类之间多态性的一种 表现,重载Overloading是一个类中多态性的一种表现。

(1)方法重写Overriding:如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。

(2)方法重载Overloading:如果在一个类中定义了多个同名的方 法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。

多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法

5、抽象类

抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。在Java 中用关键字abstract 来表示抽象。

在面向对象领域,抽象类主要用来进行类型隐藏。

抽象类的一个好处是类不能被实例化,最大的好处就是通过方法的覆盖来实现多态的属性。

6、接口

接口泛指实体把自己提供给外界的一种抽象化物,用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。在Java 中用关键字interface 来表示接口。

如果你一个接口,只有一个实现类对应的话,其实你享受不到接口的好处,而且还会觉得制造了很多麻烦。
但你如果有一组类有类似的“行为”,需要对他们进行约束的话,接口就必不可少了,会发现不再考虑具体的实现,大大减少了编程的复杂度。