请大家仔细看完,学习要慢慢来,基础要仔细打牢!!  看完这篇面向对象还不懂的,来打我!!

一.面向对象:封装、继承、多态。原文PDF获取详情见末尾)

1.1、封装:

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

好处:1.只能通过规定的方法访问数据

2.隐藏该类的实例细节,方便修改和实现。

A.访问修饰符

B.Java中的内部类:

内部类就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

那么问题来了:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!

内部类的作用:

1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。

2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据。

3.内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便。

内部类分类:

  1. 成员内部类
  2. 静态内部类
  3. 方法内部类
  4. 匿名内部类

1.2、继承:

继承是类与类的一种关系,是一种”is a”的关系。比如“狗”继承“动物”,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。

好处:

子类拥有父类的所有属性和方法(除了Private修饰的属性不能拥有)从而实现了代码的复用;

  1. 方法的重写

子类如果对继承的父类的方法不满意(不合适),可以自己编写继承的方法,这种方式就成为方法的重写,当调用方法时会优先调用子类的方法。

重写要注意,以下三个条件都是保持一样:

  1. 返回值类型
  2. 方法名
  3. 参数类型及个数

比如动物会叫,那么狗叫,a.都返回叫;b.都是叫的方法;c.都是需要相同类型的发生器官

方法重载:在同一个类中处理不同数据的多个相同方法名的多态手段。

继承的初始化顺序

父类对象属性初始化—》父类对象构造方法—》子类对象属性初始化—》子类对象构造方法

C、Final关键字

使用final关键字做标识有“最终的”含义:

  1. final修饰类,该类不许被继承。
  2. final修饰方法,该方法不能被重写
  3. final修饰属性,只能在初始化赋值或者构造方法赋值(只能选1)
  4. final修饰遍历,只能赋值一次,在声明遍历的时候赋值,赋值完就变为了变量

1.3、多态:

多态是对象的多种形态。

Java中里的多态主要表现在两个方面:

引用多态:

父类的引用指向本类的对象;

父类的引用可以指向子类的对象

方法多态:

当我们父类的引用指向不同的子对象时,他们调用的方法也是多态的。

创建本类对象时,调用的方法为本类方法;

创建子类对象时,调用的方法为子类重写的方法或者继承的方法;

但是多态使用的时候应该注意:如果子类编写了一个父类不存在的方法,那么就不能通过父类的引用来调用这个方法。

注意:继承多态的基础

A、引用类型转换

1.向上类型转换(隐式/自动类型转换),是小类型转换到大类型。

2向下类型转换(强制类型转换),是大类型转换到小类型(有风险,可能出现数据溢出)。

但是,如果父类没有引用该子类,那么是不能向下类型转换,虽然编译器不报错,但是运行会出错:

还有一种情况也无法强制,父类引用是指向一个子类,之后又去强转为其他类中是不行的。

是因为程序animal开辟的是Dog类型的内存空间,这与Cat类型内存空间不匹配,所以无法正常转换。

instanceof运算符

instanceof是JAVA的一个二元操作符,和==,>,<是同一类。他的作用是测试他左边的对象是否是它右边的类的实例,返回boolean类型的数据。

B、抽象类

定义:抽象类前使用abstract关键字修饰,则该类为抽象类。

使用抽象类要注意以下几点:

  1. 抽象类是约束子类必须有什么方法,而并不关注子类如何实现这些方法。
  2. 抽象类应用场景:

a.在某些情况下,某个父类只是知道其子类应该包含什么方法,但无法知道具体实现内容(实现多态)

b.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性。

3.抽象类定义抽象方法,只是声明,不需要实现。

4.抽象类中也可以包含其他普通的方法,也可以没有抽象方法。

5.抽象类不能直接创建,可以定义引用变量来指向子类对象,来实现抽象方法。

C、接口

1.概念

接口可以理解为一种特殊的类,由全局变量和公共的抽象方法所组成。

如果说类是一种具体实现体,那么接口定义某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里面方法的实现细节,它只规定这些类里必须提供的某些方法。(与抽象类相似)

2.基本语法

3.为什么要有接口

Java中一个类只能继承一个父类,是不够灵活,通过实现多个接口可以补充。

注意:如果要继承父类,继承父类必须在实现接口之前,即extends关键字必须在Implements关键字之前。

D、接口和匿名内部类配合使用

接口在使用过程中经常和匿名内部类配合使用。匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名称。

1.4、抽象类和接口的区别

(1)语法层面上的区别

1.一个类只能继承一个抽象类,而一个类却可以实现多个接口。

2.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;所以不能实现类中不能重新定义,也不能改变其值;而抽象类成员变量是frendly,其值可以在子类中修改。

3.抽象方法中可以有非抽象方法,接口中则不能有非抽象办法。

4.接口中可以省略abstract,抽象类是不能省略的。

5.接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

(2)设计层面上的区别

1)抽象类是对类的一种抽象,而接口是对行为的抽象。比如飞机和鸟,他们都会飞,我们会把飞机设计为一个类,鸟会设计一个类,但是不会把飞行设计为一个类,只会把飞行设计为一个接口,然后类去实现自己的飞行方式。其他不能飞的东西就不能实现这个接口。

更加详细的程序演示,请见下链接:

https://blog.csdn.net/qq_40262372/article/details/109200239

二、JAVA基础高频面试题:

https://blog.csdn.net/qq_40262372/article/details/112556249

B站视频讲解面向对象

https://www.bilibili.com/video/BV1Rz4y1m7Lv

B站视频讲解如何三个月学习JAVA拿到实习Offer:

https://www.bilibili.com/video/BV1dV411t71K

想要在学习的道路上和更多的小伙伴们交流讨论

请加Q群:725936761

期待每一位努力学习的小伙伴加入

我们一起朝着目标加油!加油!

想要了解更多请关注微信公众号:万小猿  

回复“面试”即可获取原文PDF文件

                                                                                                                              

对象三大特性:封装、继承、多态。通俗易懂!!看完还不懂来打我!!!超详细!!涉及各种重要基础相关推荐

  1. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  2. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  3. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  4. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  5. 面试挂在JVM?别慌,图文讲解JVM工作原理,看完还不懂我跪键盘

    本文转载自:面试挂在JVM?别慌,图文讲解JVM工作原理,看完还不懂我跪键盘 JDK,JRE,JVM的联系是啥? JVM Java Virtual Machine JDK Java Developme ...

  6. 三大特征 封装 继承 多态

    ''' 1.面向对象与面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 缺点:扩展性 ...

  7. Android进阶必备:滑动冲突解决与事件分发机制(附视频讲解)这篇看完还不懂请寄刀片

    1.前言 Android学习一段时间,需求做多了必然会遇到滑动冲突问题,比如在一个ScrollView中要嵌套一个地图View,这时候触摸移动地图或者放大缩小地图就会变得不太准确甚至没有反应,这就是遇 ...

  8. 你不知道的js中关于this绑定机制的解析[看完还不懂算我输]

    前言 最近正在看<你不知道的JavaScript>,里面关于this绑定机制的部分讲的特别好,很清晰,这部分对我们js的使用也是相当关键的,并且这也是一个面试的高频考点,所以整理一篇文章分 ...

  9. Python全栈开发——面向对象的三大特性(继承 多态 封装)

    1.继承 1.两层意思 改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def ...

  10. Java面向对象三大特性之继承多态的预习笔记,are you ready? 面对疾风吧!

    文章目录 继承(extends) super关键字 方法重写 instanceof关键字 abstract关键字 接口(interface) 多态 继承(extends) AextendsB A继承了 ...

最新文章

  1. epoll_data_t里面的void *ptr; int fd; u32; u64 分析
  2. js字符串转化为方法调用
  3. java基础学习整理(一)
  4. 计算机二级c语言可以提前交卷吗,软考考试中可以提前交卷吗?计算机软考成绩一般多久公布...
  5. ubuntu21.04下终端路径显示优化
  6. ionic安装插件常用命令
  7. Oracle事务之一:锁和隔离
  8. ffmpeg解码流程 turorial5详解
  9. bzoj4998: 星球联盟
  10. 乐山市计算机学校谭娟,乐山市计算机学校重视新闻写作培训
  11. pycharm的debug
  12. Codeforces 466E Information Graph
  13. Java快捷键标识符入门学习
  14. ubuntu 下的开机启动项管理命令
  15. android中点击头像放大,Android头像下拉缩放动效
  16. 用Python输出自幂数
  17. 贝叶斯统计为什么优于频率统计?
  18. 【蓝桥杯嵌入式】【STM32】14_CT117E_EXA蓝桥杯嵌入式扩展板硬件资源一览及其驱动编写
  19. Windows Sockets 规范及应用
  20. Windows10自带Ubuntu更换UI主题

热门文章

  1. PHPCMS2008调用Uchome系统[空间之星]GET语句
  2. 通过 Socket 实现 UDP 编程 入门
  3. 套料排版代码python_XSuperNEST全自动套料解决方案
  4. 现金支票打印模板excel_好用的支票打印软件
  5. 单机多实例数据库搭建过程
  6. kill -9 杀不死的进程处理办法
  7. nyoj 弹球II(数学 模拟)
  8. 保存时自动加分号_JavaScript 语句后应该加分号么?
  9. 【hdoj1021】类斐波那契数列的循环节(f[i]能否mod3?找规律)
  10. echarts 不支持 手机 浏览器_中国北斗卫星导航系统真的来了!获国产手机力挺:但iPhone却不支持...