Java面向对象的三大特性

目录

封装

封装的好处:

权限修饰符

this 关键字

继承

使用继承的好处

什么时候用继承

​编辑

继承的特点

注意点

super关键字

多态

多态的好处?

多态调用成员的特点

多态的弊端


封装

封装告诉我们,如何正确设计对象的属性和方法

简单来说,就是对象代表什么,就得封装对应的数据,并提供数据对应的行为。

在类的内部确保数据操作细节自己完成,不允许外部干涉,只对外公开简单的接口。

封装的好处:

1.让编程变得很简单,有什么事,找对象,调方法就行。

2.良好的封装能减少耦合

3.类内部的实现可以自由的修改

4.类具有清晰的对外接口

权限修饰符

权限修饰符可以控制对外、对类、对子类、对包所暴露的方法与属性。

Java规定的四种权限:private、缺省、protected、public

修饰符类内部同一个包不同包的子类同一个工程
private可以使用
缺省可以使用可以使用
protected可以使用可以使用可以使用
public可以使用可以使用可以使用可以使用

this 关键字

在类中使用,可以代表该类,后接属性与方法,代表该类的属性与方法

可以区别成员变量和局部变量

继承

Java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。 public class student extends Person {} Student称为子类(派生类),Person称为父类(基类或超类)。

使用继承的好处

可以把多个子类中重复的代码抽取到父类中了,提高代码的复用性。 子类可以在父类的基础上,增加其他的功能,使子类更强大

什么时候用继承

当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码

继承的特点

Java只支持单继承,不支持多继承,但支持多层继承

Java中所有的类都直接或者间接继承于Object类

注意点

  1. 父类成员使用private修饰,那么子类不能被继承。(private只是对本类有效)

  2. 构造方法不能够被继承(构造方法必须要与类名保持一致)。

super关键字

在类中使用,代表该类的父类

  1. 访问父类的属性:super.变量名

  2. 访问父类的方法:super.方法名()

  3. super关键字在子类里调用父类的构造方法,则必须在子类的构造方法中的第一行

多态

多态就是同类型的对象,表现出的不同形态,

多态的表现形式 : 父类类型 对象名称=子类对象;

多态的前提 :

        有继承或实现关系

        有父类引用指向子类对象 eg:Fu f = new Zi();
        有方法重写

多态的好处?

使用父类型作为参数,可以接收所有子类对象。体现多态的扩展性与便利。

多态调用成员的特点

变量调用 : 编译看左边,运行也看左边。

方法调用 : 编译看左边,运行看右边

调用成员变量的时候,javac在编译代码时,会先看左边的父类里面有没有这个变量,如果有编译成功,如果没有,编译失败。

java在运行代码时,实际获取的就是左边父类的成员变量的值。

调用成员方法的时候,javac在编译代码时,会先看左边父类里面有没有这个方法,如果有,编译成功,如果没有,编译失败。

java在运行代码时,实际运行的就是右边中子类中的方法。

多态的弊端

不能调用子类的特有功能,如果调用,直接报错。

报错的原因:

        当调用成员方法的时候,编译看左边,运行看右边。 那么在编译的时候会先检查左边的父类中有没有这个方法,如果没有直接报错。

解决方案 :

        变回子类类型就可以了。

        转换的时候用instanceof关键字进行判断

//a是不是Dog的实例,如果是返回trueif (a instanceof Dog){//将a强转成Dog类型Dog d = (Dog) a;}
​
//JDK14新特性
//先判断a是否为Dog类型,如果是,则强转成Dog类型,转换之后变量名为d
//如果不是,则不强转,结果直接是false
if(a instanceof Dog d){
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449782.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习和大数据技术的进步在自然语言处理领域的应用

文章目录 每日一句正能量前言一、深度学习在NLP中的应用二、大数据技术在NLP中的应用三、深度学习和大数据技术的影响四、应用场景后记 每日一句正能量 努力学习,勤奋工作,让青春更加光彩。 前言 随着深度学习和大数据技术的迅猛发展,自然语…

<Linux> 进程信号

目录 一、信号概念 二、信号的作用 三、信号的特性 四、信号捕捉初识 五、信号产生 (一)通过终端按键产生信号 (二)硬件中断 (三)系统调用产生信号 1. kill 函数 2. raise 函数 3. abort 函数 …

2021-10-12 51蛋骗鸡数码管前7位显示1-7第8位显示0-9

缘由 51单片机数码管问题-编程语言-CSDN问答 #include "REG52.h" sbit K1 P3^0; sbit K2 P3^1; sbit K3 P3^2; sbit K4 P3^3; bit k1,wk0; unsigned char code SmZiFu[]{63,6,91,79,102,109,125,7,127,111,128,255,64};//0-9.消隐- unsigned char Js0,miao0,fen…

数据结构—基础知识:哈夫曼树

文章目录 数据结构—基础知识:哈夫曼树哈夫曼树的基本概念哈夫曼树的构造算法哈夫曼树的构造过程哈夫曼算法的实现算法:构造哈夫曼树 数据结构—基础知识:哈夫曼树 哈夫曼树的基本概念 哈夫曼(Huffman)树又称最优树&…

T06垃圾收集器G1ZGC

垃圾收集器G1&ZGC CMS用的增量更新,G1用的原始快照 G1收集器(-XX:UseG1GC) G1(Garbage-First)是一款面向服务器的垃圾收集器,主要针对配置多颗处理器及大容量内存的机器,以极高概率满足停顿时间的要求&#xff…

Springboot集成Javamelody

JavaMelody的目标是监视QA和生产环境中的Java或Java EE应用服务器。它不是模拟用户请求的工具,而是根据用户对应用程序的使用情况来衡量和计算应用程序实际操作的统计信息的工具。JavaMelody主要基于请求统计和演化图。 它允许改进QA和生产中的应用程序&#xff0c…

谷歌seo搜索引擎优化需要做什么?

当你要做谷歌seo,经手一个你之前没有接触过的网站,你首先要做的就是分析网站当前的流量数据,如果是新站自然不需要这一步,不过数据分析依旧是件很重要的事情,做seo不懂得分析数据相当于白做 再来就是你要了解网站所在的…

【机器学习300问】21、什么是激活函数?常见激活函数都有哪些?

在我写的上一篇文章中介绍了感知机(单个神经元)的构成,其中就谈到了神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出值。这也称为“神经元被激活”。如果想对神经网络是什么有更多了解的…

使用css绘制小三角形

要使用CSS绘制小三角形&#xff0c;您可以使用border属性来设置边框样式。下面是一种常见的绘制小三角形的方法&#xff1a; <style>.box {width: 0;height: 0;/* border-top: 10px solid red; */border-bottom: 10px solid blue;border-left: 10px solid transparent;b…

CodeEase插件市场上线了

目录 怎么进入插件市场&#xff1f;插件市场有哪些功能&#xff1f;怎么上传自己的插件&#xff1f;怎么进入后台&#xff1f;结语 CodeEase生态的插件市场正式上线了&#xff01; 我们非常激动地宣布&#xff0c;CodeEase生态的插件市场已经正式上线&#xff01;这是一个为广…

Java开发工具 IntelliJ IDEA 2023中文

IntelliJ IDEA 2023是一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;适用于多种编程语言&#xff0c;包括Java、Python、Kotlin等。它提供了许多特色功能&#xff0c;以提高开发效率和代码质量。 Java开发工具 IntelliJ IDEA 2023中文 以下是一些IntelliJ ID…

MySQL数据库入门

MySQL数据库概述 1&#xff0c;为什么要使用数据库2&#xff0c;数据库的相关概念3&#xff0c;常见的数据库管理系统4&#xff0c;MySQL介绍5&#xff0c;关系型数据库和非关系型数据库6&#xff0c;关系型数据库的设计规则7&#xff0c;表的关联关系7.1&#xff0c;一对一7.2…