文档章节

基础知识回顾之java的面向对象的四大特征

先进青年
 先进青年
发布于 2016/12/12 23:20
字数 752
阅读 20
收藏 0

四大特征分别为:抽象、封装、继承、多态

下面分别说一下这四个特征:

1、抽象

抽象就是对现实的一类事物,抽取其特点,并把这些特点整合一起,用java语言表示来表示该类事物。

2、封装

封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。对于封装的概念:封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。

3、继承

一个类继承另一个类,则称继承的类为子类,被继承的类为父类。子类与父类的关系并不是日常生活中的父子关系,子类与父类而是一种特殊化与一般化的关系,是is-a的关系,子类是父类更加详细的分类。如class dog extends animal,就可以理解为dog is a animal.注意设计继承的时候,若要让某个类能继承,父类需适当开放访问权限,遵循里氏代换原则,即向修改关闭对扩展开放,也就是开-闭原则。

有人说,继承不就是子类跟父类一样了吗?若不加以改变子类,确实跟父类一样,在这里有两种方式可以使子类和父类产生差异,其一就是直接在子类中添加新的方法;其二就是改变父类的方法,也就是所说的覆盖。
4、多态

多态必须建立在封装和继承的上。

多态也就是说相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

举例说明:

Shape为父类,Circle、Line均继承Shape类。其中Shape类中有draw()方法,因此Circle、Line类中也继承了该方法。代码如下

[java] view plain copy

  1. public class Shape {  
  2.     public void draw() {  
  3.         System.out.println("Shape draw");  
  4.     }  
  5. }  
  6.   
  7. public class Circle extends Shape {  
  8.     public void draw() {  
  9.         System.out.println("Circle draw");  
  10.     }  
  11.   
  12. }  
  13.   
  14. public class Line extends Shape {  
  15.     public void draw() {  
  16.         System.out.println("Line draw");  
  17.     }  
  18. }  

在测试的main函数中的代码

[java] view plain copy

  1. Shape line = new Line();//这里是上转型  
  2.  Shape circle = new Circle();  
  3. line.draw();  
  4. circle.draw();  

结果就是:

Line draw
Circle draw

© 著作权归作者所有

先进青年
粉丝 0
博文 28
码字总数 9089
作品 0
武汉
私信 提问
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
2018/05/09
0
0
Java培训实战教程之Java基础知识精华部分(一)(二)(三)

Java培训实战教程之Java基础知识精华部分(一)_java概述 =============================================================================Java培训实战教程之Java基础知识精华部分(一)_java概...

黑泽明军
2018/04/13
0
0
【给初学者】Android学习路线

很多朋友都对学习路线问题感到迷茫,特别是还在上学的朋友们。在这里就详细的为大家介绍一下。 1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Jav...

Jimmy Xie
2012/09/08
762
1
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
2
0
干货系列1:Java互联网网站开发工程师 的技术提高与晋升路线(技术专精)

前几天写了自己对于Java软件开发工程师职业发展规划方面的一些感悟,陆续收到一些反馈,希望我能再就Java工程师不同的开发(职责)方向谈谈职业发展问题。(上一篇:Java软件开发工程师的自我...

半饱即好
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
5分钟前
3
0
Docker下实现MySQL主从(读、写分离)同步配置

docker下实现两个(或多个)mysql容器的主、从数据库同步配置,首先要明白docker容器的相互通信关系,默认是使用的bridge模式: 也就是说,通过docker run命令创建docker容器是每个容器都有自己...

源哥L
15分钟前
8
0
一起来学Java8(三)——方法引用

在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer;class Person { public static void sayHello(String name) { S...

猿敲月下码
34分钟前
15
0
读书笔记:深入理解ES6(十一)

第十一章 Promise与异步编程   Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码...

张森ZS
57分钟前
23
0
面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
今天
30
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部