只要是从事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 来表示接口。

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

Java基础:继承,封装,多态,抽象类,接口的更多相关文章

  1. Java基础——继承和多态

    面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...

  2. Java基础第二天--多态、接口

    多态 多态的概述 同一个对象,在不同时刻表现出来的不同形态 多态的前提和体现 有继承/实现关系 有方法重写关系 有父类引用指向子类对象 public class Animal { public voi ...

  3. Java基础---继承、抽象、接口

    一.概述         继承是面向对象的一个重要特征.当多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继那个类即可.这时,多个类可以称为子类,单 ...

  4. Java基础系列4:抽象类与接口的前世今生

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 1.抽象类: 当编写 ...

  5. python基础——继承和多态

    python基础——继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类 ...

  6. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  7. OOP面向对象 三大特征 继承封装多态

    OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...

  8. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  9. Java基础学习小记--多态

    题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...

  10. Java的继承和多态

    看了博客园里面的一个文章,关于java的继承和多态: class A ...{ public String show(D obj)...{ return ("A and D"); ...

随机推荐

  1. 利用IdentityServer3在ASP.NET 5和Angular中实现OAuth2 Implicit Flow

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:之前介绍过的IdentityServer3虽然是基于Katana开发的,不过同样可以托 ...

  2. 最实用的APP界面设计知识,有温度的APP设计(转)

    在逛简书的时候,无意之间看到了这样的一篇非常有意思的app设计博文.顾25学堂的摘录了其中的一些关于移动端APP界面设计的精华.分享给25学堂的app设计师们. 当然,下面的这些app设计知识点是来自 ...

  3. PHP中include和require(转)

    昨天去面试一个php开发,看到笔试试卷上有这么一道题目: include和require有什么区别? 这个题目可以称得上php开发面试中的必考题目,网上也有各种答案和解释.但是我当时却真的想不起来了. ...

  4. 【T_SQL】基础 续+

    十.模糊查询 1.LIKE --查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容. SELECT StuName AS 姓名 FROM Stuinfo WHERE stuname ...

  5. JMeter处理jdbc请求后的响应结果

    JMeter如果进行JDBC请求,请求后的响应结果如何给下一个请求用(也就是传说中的关联),于是研究了一下,下面将学习的成果做个记录: 1.添加 "JDBC Connection Confi ...

  6. 使用Genymotion安装APK出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE的解决办法

    当我们安装好Genymotion后,把Android运用部署到上面调试时,console控制台会报错:Installation error: INSTALL_FAILED_CPU_ABI_INCOMP ...

  7. 后缀数组 POJ 2217 Secretary

    题目链接 题意:求两个字符串的最长公共子串 分析:做法是构造新的串是两个串连接而成,中间用没有出现的字符隔开(因为这样才能保证S的后缀的公共前缀不会跨出一个原有串的范围),即newS = S + '$ ...

  8. MFC 打开文件夹 调用其他程序 打开文件

    ShellExecute(NULL,TEXT("OPEN"),要打开的文件的路径,NULL,NULL,SW_SHOWNORMAL); ShellExecute(NULL, &quo ...

  9. iOS 安装Cocoapods以及安装第三方库的操作流程

    安装cocoapods的流程: 1.打开终端,输入:  sudo gem update —system 2.输入密码,稍等 3.gem sources --remove https://rubygem ...

  10. dl dt dd定义

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...