java面向对象三大特性:封装、继承、多态——举例说明
概念
封装:封装就是将客观的事物抽象成类,类中存在属于这个类的属性和方法。
继承:继承就是把父对象继承过来,这样子类就存在了父类的操作方法,java是单继承,就是只能继承一个父对象。
多态:多态就是程序中允许出现重名现象,java实现多态的方式有方法重载和成员变量覆盖两种形式。
前期准备
首先定一个Fruit对象,里面封装了一个getName方法
class Fruit {static {System.out.println("我是Fruit类静态块");}public Fruit() {System.out.println("我是Fruit类构造方法");}public void getName() {System.out.println("我的名字是Fruit");}}
再定一个Apple对象来继承Fruit对象
class Apple extends Fruit {static {System.out.println("我是Apple类静态块");}public Apple() {System.out.println("我是Apple类构造方法");}public void getName(){System.out.println("我的名字是Apple");}
}
其中Apple对象重写了父类的getName方法。
测试代码
1、使用子类构建对象的时候,父类和子类的静态块和他们的构造方法的执行顺序是什么?
测试的main如下所示,注意父类和子类里面有静态块和构造方法,看下面测试代码,可以先写出你认为的执行结果:
public static void main(String[] agrs) {Apple apple = new Apple();apple.getName();}
测试结果如下:
我是Fruit类静态块
我是Apple类静态块
我是Fruit类构造方法
我是Apple类构造方法
我的名字是Apple
2、使用父类引用构建子类对象的时候,父类和子类的静态块和他们的构造方法的执行顺序是什么?
测试的main如下所示,注意父类和子类里面有静态块和构造方法,看下面测试代码,可以先写出你认为的执行结果
public static void main(String[] agrs) {//使用父类引用指向子类对象Fruit fruit = new Apple();fruit.getName();}
测试结果如下:
我是Fruit类静态块
我是Apple类静态块
我是Fruit类构造方法
我是Apple类构造方法
我的名字是Apple
3、如果两块代码一起执行会发生什么呢?
public static void main(String[] agrs) {Fruit fruit = new Apple();fruit.getName();System.out.println("---------分割线---------");Apple apple = new Apple();apple.getName();}
执行结果:
我是Fruit类静态块
我是Apple类静态块
我是Fruit类构造方法
我是Apple类构造方法
我的名字是Apple
---------分割线---------
我是Fruit类构造方法
我是Apple类构造方法
我的名字是Apple
总结
1、子类对象构建的时候静态块和构造方法执行顺序是:父类静态块 -> 子类静态块 ->父类构造方法 -> 子类构造方法
2、父类和子类的静态块是执行一次的
3、子类方法重写父类方法后,使用子类构建的对象执行的都是子类的方法。
java面向对象三大特性:封装、继承、多态——举例说明相关推荐
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- Java面向对象三大特性(封装继承多态)解释及案例
文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...
- Java面向对象三大特性之继承多态的预习笔记,are you ready? 面对疾风吧!
文章目录 继承(extends) super关键字 方法重写 instanceof关键字 abstract关键字 接口(interface) 多态 继承(extends) AextendsB A继承了 ...
- Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态
Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...
- java 面向对象三大特性之继承 万字详解(超详细)
目录 前言 : 一.为什么需要继承: 二.什么是继承(Warning : 篇幅较长)? 1.继承概述: 2.子类继承父类之后达到的效果 : ①如何使用继承? ②代码演示 : 3.继承的使用场景: eg ...
- Java面向对象三大特性(封装、继承、多态)
文章目录 前言 一.封装 1. 封装的概念 2. private实现封装 3. getter和setter方法 4.封装的好处 二.继承 1. 继承的概念 2. extends实现继承 3. supe ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...
- 【职坐标】java面向对象三大特性(二)——继承详解
[职坐标]java面向对象三大特性(二)--继承详解 a) 什么是继承? i. 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可 b) ...
- java 面向对象三大特性之多态 万字详解(超详细)
目录 前言 : 一.为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二.什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三.多态的 ...
最新文章
- PCL:PCLPlotter可视化特征直方图
- 跨学科融合,塑π型人才 | 数据科学研究院第四届RONG奖学金答辩会成功举办...
- c# 模拟window 操作鼠标|winapi
- python是用什么语言开发的-专为人工智能和数据科学而生的Go语言,或将取代Python...
- git 常用命令使用
- jQuery-基本选择器的种类
- 360加固分析(一)
- java快速寻找一个数组的最大值或最小值, min, max,三种方法
- 大数据WEB阶段 Servlet配置优先级 , Spring容器设置对静态资源放行
- linux桌面效率提高,ElementaryOS:使用这个轻量级 Linux 桌面提高工作效率
- mongoDB3.2.8 升级遇到的问题
- net如何判断浏览器的类别
- 线程中task取消_Rust Async: async-task源码分析
- 马云又向美国捐赠50万份检测试剂盒和100万只口罩
- java上传文件的二进制_文件的上传:二进制文件的上传;
- Qt4_实现自定义委托
- 2018年,云计算的6大未来趋势
- linux添加自己的键盘映射,linux下修改键盘映射
- wd移动硬盘插电脑没反应_西数移动硬盘-急急急!!!!!西部数据移动硬盘插在电脑上不显示盘符了,有人知道? 爱问知识人...
- 三段式 matlab,1stopt三段式函数拟合
热门文章
- excel中如何筛选重复数据
- 距离剩者为王,服饰企业还要跨过很多道坎
- 国产奶粉冲击高端,飞鹤、蒙牛、合生元们的牌好不好打?
- 本土品牌“资源诅咒”之下,为何李宁逆袭,达芙妮跌落?
- ad采集 cube配置 dma_【技术技巧】 使用MCC数据采集设备获取模拟波形
- 事物的开始和结束命令分别是什么_人教版小学四年级语文下册期末测试题及答案[1]...
- hp designiet 500_2020年HP学院壁纸
- python导入包库的两种语句import 和 from … import
- java类多例_Java多例设计模式实例详解
- Python中两种文件修改的方式