只要是从事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. hdu 4043 2011北京赛区网络赛D 概率+大数 **

    推出公式为:P = A(2n,n)/(2^(2n)*n!) 但是不会大数,学完java再补

  2. [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B

    [20140704更新],在公司收邮件的时候,问题再次出现,错误码:0x800ccc13,按照以下方法测试成功: 1. 按照以前办法,反复重启,失败 2. 按照以下参考连接A中的步骤 a. Click ...

  3. 提升 LaTeX 效率的小工具:Detexify LaTeX handwritten symbol recognition

    Detexify LaTeX handwritten symbol recognition 用 LaTeX 的人找符号的表示方法通常很费事,需要去翻长长的列表.Detexify 是一个省事的小网站,只 ...

  4. HDU 3364 Lanterns 高斯消元

    Lanterns Problem Description   Alice has received a beautiful present from Bob. The present contains ...

  5. 通信原理实践(三)——FM调制

    一.FM调制 1.代码如下: clc,clear; fm = ; % 调制信号频率(Hz) Am = 0.5; % 调制信号幅度 fc = 5e3; % 载波频率(Hz) Ac = ; % 载波幅度 ...

  6. 【T_SQL】 基础

    一.T-SQL 的组成 1.DML(数据操作语言 Data Manipulation Language)               查询.插入.删除和修改数据库中的数据.SELECT.INSERT. ...

  7. HDU 5867 Sparse Graph (2016年大连网络赛 I bfs+补图)

    题意:给你n个点m条边形成一个无向图,问你求出给定点在此图的补图上到每个点距离的最小值,每条边距离为1 补图:完全图减去原图 完全图:每两个点都相连的图 其实就是一个有技巧的bfs,我们可以看到虽然点 ...

  8. linux安装配置SVN并设置钩子

    安装说明 系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件 检查已安装版本 #检查是否安装了低版本的SVN 1 rpm ...

  9. 用val()获取与设置input的值

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. BZOJ 2565 回文串-Manacher

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2565 题意:中文题 思路:定义L[i],R[i].表示以i为左端点/右端点时,最长回文串长 ...