1 基本概括

2 详解

封装:

是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

封装的优点:只能通过规定的方式来访问数据;隐藏类的实现细节;方便加入控制语句(比如验证参数合法性);方便修改实现(比如修改了属性的类型,接口可以添加一次转换)。

继承:

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。简单概括为,父类提供共性,子类补充特殊性。

使用继承时的三个关键:子类拥有父类的所有属性和方法,但只能调用非private的属性和方法;子类可以对父类进行扩展,拥有自己的属性和方法;子类可以自己实现父类的方法。

构造器:子类不能继承父类的构造器,只能调用父类的非private构造器,使用super()。切记必须在子类构造器第一行调用。

protected 关键字:方便同一个包的类和子类访问。

向上转型:class A;class B extend A;A b = new B() 的使用,即B是A的意思。

切记谨慎使用继承,理解is-a的关系。代码重用可以考虑工具类,行为相同可以考虑接口。《Think in Java》提到:问一问自己是否需要从子类向父类进行向上转型。如果必须向上转型,则继承是必要的,但是如果不需要,则应当好好考虑自己是否需要继承。

多态:

所谓多态,就是指一个引用(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。

在上面提到子类可以自己实现父类的方法。例如 class A;class B extend A;class C extend A;在B 和C中分别自己实现了A的某个函数,当A b = new B() A c = new C() 时,调用b,c 相同函数可能会返回不同的行为,因为父类的引用变量指向子类对象了。

喜欢的话可以点下关注。

封装 继承 多态_Java基础知识——封装、继承、多态相关推荐

  1. Unity中的MonoBehaviour脚本-基础知识和继承关系

    本文分享Unity中的MonoBehaviour脚本-基础知识和继承关系 作为一个程序员, 在Unity中开发, 我们接触最多的对象之里一定有MonoBehaviour, 所以作为Unity基础知识学 ...

  2. 第二十九节:Java基础知识-类,多态,Object,数组和字符串

    前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...

  3. java 抽象封装多态_java面向对象(封装,继承,多态,抽象,接口的定义和实现)...

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

  4. java继承原理内存角度_Java基础知识巩固

    最近发现自己的Java基础知识还是有点薄弱,刚好有点空闲时间进行再补一补,然后进行整理一下,方便自己以后复习.其实个人认为Java基础还是很重要的,不管从事Java后端开发还是Android开发,Ja ...

  5. java继承和多态_Java基础继承与多态

    Java基础第九天 继承概述 引入 首先我来写两个代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15//定义学生类 class Student { public void  ...

  6. java知识点博客园_JAVA基础知识回顾

    JAVA基础知识回顾 一.背景介绍 JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platfo ...

  7. java大全_Java基础知识大全(一)

    一.基础知识: 1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. J ...

  8. java package报错_Java基础知识总结 - 超详细篇(上)

    1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...

  9. java的实现基础知识_Java基础知识

    1 面向对象和面向过程的区别 面向过程: 优点:性能高.直接编译. 适用:单片机.嵌入式开发.Linux/Unix 面向对象: 特点:封装.继承.多态 优点:易维护.易复用.易扩展.可移植(数据类型. ...

最新文章

  1. 系统升级到10.13之后cocoapods安装失败问题解决办法
  2. pythontk多线程_tkinter是否线程安全(threadsafe)?
  3. Hibernate query by Example
  4. apache的斜杠问题
  5. 趣谈设计模式 | 桥接模式(Bridge):将抽象与实现分离
  6. RunJar是什么进程?
  7. matlab 多维数组申明
  8. 说实话:中文自然语言处理(知识图谱)的N个真实情况
  9. z370支持pcie信号拆分吗_定了!AMD B550主板确认将支持PCIE4.0,多项能力接近X570
  10. [leetcode]5341. 最后 K 个数的乘积
  11. 配置linux danted socks服务
  12. 性能测试---性能指标【1】
  13. 解析json对象出现$ref: $.list[0]的解决办法
  14. PDF阅读器使用技巧
  15. 东北四省赛 Spell Boost
  16. android studio代码格式化设置,Android studio kotlin代码格式化操作
  17. python早读读后感_《学习Python》读后感摘抄
  18. 运动目标检测之帧差法
  19. JAVA集合面试题52道
  20. 以后在此写下自己的后博士时代吧SWE-SPHysics

热门文章

  1. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  2. xcode编辑时闪退的问题解决
  3. Too many open files错误与解决方法
  4. Angular (SPA) WebPack模块化打包、按需加载解决方案完整实现
  5. python: 关于解决‘\u‘开头的字符串转中文的方法
  6. Xcode 6 Bug:Interface Builder文件中的未知类
  7. Python json pickle模块
  8. lvs集群基础及lvs-nat、dr、fwm实践
  9. IBM拓展云数据分析服务 用户来“做主”
  10. firefox兼容性问题