软考62-上午题-【面向对象技术】-面向对象的基本概念1

一、封装

1-1、封装的定义

一个对象把属性和行为封装为一个整体。是一种信息隐蔽技术。

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

封装的目的:使对象的使用者和生产者分离。

1-2、封装的步骤(代码的实现)

1.使用关键字private对类的属性进行隐藏;(方法一般不用隐藏)

2.利用setter/getter方法对属性值进行操作;

3.可以在方法中加入条件控制语句,进行限制。

示例:

Person类:

public class Person {// 使用private修饰属性private String name;private int age;public String getName() {return name;}public void setName(String name) {// 在使用setter方法的时候,可以发现this关键字,这是由于方法的变量名和属性名是一样的// 局部变量名和成员变量名会优先使用局部变量名,this就是解决这种情况的办法。this.name = name;}public int getAge() {return age;}public void setAge(int age) {// 添加一些限制,保证数据的安全性if(age < 0 || age > 150){System.out.println("这个岁数,你认真的吗");}this.age = age;}// 使用public修饰方法public void Eat(){System.out.println(name + "在吃饭");}}

Person实例化:

public class PersonTest {public static void main(String[] args) {Person ws = new Person();ws.setName("王大力");ws.setAge(-10);ws.Eat();}}

 结果输出:

1-3、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

在使用setter方法的时候,可以发现this关键字,这是由于方法的变量名和属性名是一样的,局部变量名和成员变量名会优先使用局部变量名,this就是解决这种情况的办法。 

二、继承 

2-1、继承的定义

继承:子类和父类之间,共享属性和方法

在定义和实现一个类的时候(子类),可以在一个已经存在的类的基础上进行(父类)。

一个父类可以有多个子类,这些子类都是父类的特例,如:交通工具(父类)、飞机(子类)。

父类描述了子类的公共属性和方法。一个子类可以继承它的父类的所有属性和方法,这些属性和方法在子类中不必定义,子类还可以定义自己的属性和方法。

【注意】:

子类无法访问父类的private字段或者private方法!!!

示例:

父类:Person

class Person {private String name;private int age;public String getName() {...}public void setName(String name) {...}public int getAge() {...}public void setAge(int age) {...}
}

子类:Student,继承Person类

class Student extends Person {// 不要重复name和age字段/方法,// 只需要定义新增score字段/方法:private int score;public int getScore() { … }public void setScore(int score) { … }
}

继承的分类:

  • 单重继承:子类B只能从一个父类A中得到继承;
  • 多重继承:一个子类可以有不止一个父类。

java只允许单继承!

2-2、方法的重写(Override)

子类可以重写(覆盖)继承来自父类的方法,即方法名、参数列表与父类的方法相同,但实现方式不同。

示例:

父类:Person

public class Person {protected void sleep(){System.out.println("目标:早睡早起");}}

子类:Student,继承Person类,重写sleep()方法

public class Student extends Person{@Overrideprotected void sleep(){// 在子类重写的方法中,可以通过super关键字调用父类的“原始”方法// super.sleep();System.out.println("实际:天天熬夜...");}public static void main(String[] args) {Student student = new Student();student.sleep();}}

结果输出:

【小结】:

1、子类可以继承父类,所有的属性、方法;

2、子类可以新增自己的属性、方法;

3、子类可以重写(覆盖)父类的方法。

2-3、真题

真题1:

真题2:

真题3:

父类:称为超类、基类;
子类:扩展类、派生类。

真题4:

真题5:

真题6:

真题7:

2-4、方法的重载overLoad和重写overRide

Override和Overload不同的是,如果方法签名不同,就是Overload,Overload方法是一个新方法;如果方法签名相同,并且返回值也相同,就是Override。

【注意】:

方法名相同,方法参数相同,但方法返回值不同,也是不同的方法。

在Java程序中,出现这种情况,编译器会报错。

三、多态

3-1、多态的定义

收到消息时,对象要予以响应。不同的对象,收到同一消息可以产生完全不同的结果。这一现象称为:多态。

使用多态时,用户可以发送一个通用的消息,而实现的细节由接受对象自行决定。

多态的实现,收到继承的支持,利用类的继承的层次关系,把具有通用功能的消息放在高层次,不同的实现这一功能的行为,放在低层次。

父类名 对象名 = new 子类名

父类型的引用指向子类对象。

编译看左边的类;

运行看右边的类!

示例:

父类:Person

public class Person {public void work(){System.out.println("person work");}}

子类1:Student

public class Student extends Person {@Overridepublic void work(){System.out.println("student work");}}

子类2:Emptee

public class Emptee extends Person {@Overridepublic void work(){System.out.println("emptee work");}}

结果展示: 

3-2、多态的分类

3-3、真题

真题1:

真题2:

真题3:

真题4:

真题5:

真题6:

真题7:

真题8:

真题9:

真题10:

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

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

相关文章

Docker发布镜像(DockerHub,阿里云)

目录 1、发布到DockerHub上 2、发布到阿里云镜像服务上 小结 1、发布到DockerHub上 1.地址https://hub.docker.com/注册自己的账号 2.确定这个账号可以登录 3.在服务器上提交自己的镜像 [rootwq test]# docker login --helpUsage: docker login [OPTIONS] [SERVER]Log in…

数据存储格式

数据存储格式是指数据在存储介质中表示和组织的方式&#xff0c;以便于读取、写入和管理。 csv&#xff08;逗号分隔值&#xff09; CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff09;是一种常见的数据存储格式&#xff0c;它以纯文本形式存储表格数…

uniapp实现---类似购物车全选

目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 四、小结 注意事项 一、实现思路 点击商家复选框&#xff0c;可选中当前商家下的所有商品。点击全选&#xff0c;选中全部商家的商品 添加单个多选框&#xff0c;在将多选…

在XCode中使用SwiftGen管理你的图片、配色、多语言文件等

SwiftGen是一个工具&#xff0c;可以为您的项目资源&#xff08;如图像、本地化字符串等&#xff09;自动生成Swift代码&#xff0c;然后你就可以像使用一个Class类一样访问你的资源了。 而且添加或更新资源后&#xff0c;SwiftGen也会自动更新用于访问资源的Class类。对于管理…

H3C 路由过滤路由引入实验

H3C 路由过滤&路由引入实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 上使用 loopback 口模拟业务网段R1 和 R2 运行 RIPv2&#xff0c;R2&#xff0c;R3 和 R4 运行 OSPF&#xff0c;各自协议内部互通在 RIP 和 OSPF …

computed和methods的区别

computed和methods在Vue.js中都是用于处理数据和逻辑的方法&#xff0c;但它们之间存在一些重要的区别。 缓存机制&#xff1a;computed属性是基于它们的依赖进行缓存的。只有当它的相关依赖发生改变时才会重新计算。这意味着只要计算属性依赖的响应式属性没有发生变化&#x…

Android9-W517-使用NotificationListenerService监听通知

目录 一、前言 二、前提 三、方案 方案一 方案二 方案三 方案四 方案五 方案六 方案七 四、关于NotificationListenerService类头注释 五、结论 一、前言 NotificationListenerService可以让应用监听所有通知&#xff0c;但是无法获得监听通知的权限&#xff0c;如…

HTML标签语义化,前端开发学习计划

正文 HTML中的标签从闭合的角度可以分为闭合标签和空标签。而HTML中大部分标签都是闭合标签&#xff0c;其他少数为空标签&#xff1b; 常见的空标签&#xff1a; <input />、 <img />、 <area />、 <base />、 <link />等 HTML中对标签另一种…

修改一个教材上的网站源码使它能在www服务器子目录上正常运行

修改一个教材上的网站源码&#xff0c;使它能在www服务器子目录上正常运行。 该网站源码是教材《PHPMySQL网站开发项目式教程》上带的网站源码。该源码是用 php html 写的。该源码包含对mysql数据库进行操作的php代码。以前该网站源码只能在www服务器的根目录上正常运行&…

C语言数据结构与算法——深度、广度优先搜索(DFS、BFS)

目录 一、深度优先搜索&#xff08;Depth-First-Search 简称&#xff1a;DFS&#xff09; 无向图的深度优先搜索 有向图的深度优先搜索 二、广度优先搜索&#xff08;Breadth-First-Search 简称&#xff1a;BFS&#xff09; 无向图的广度优先搜索 有向图的广度优先搜索 深…

【工具】PIL图片颜色处理

使用前置函数&#xff0c;用于图片效果显示 from PIL import Image, ImageOps, ImageEnhance import matplotlib.pyplot as pltclass SHOW:def __init__(self):self.idx 0# 创建宽10英寸、高90英寸self.fig plt.figure(figsize(10,90))def add(self, img, title):self.idx …

【JavaEE】_Spring MVC项目之使用对象传参

目录 1. 使用对象传参 2. 后端参数重命名问题 2.1 关于RequestPara注解 本专栏关于Spring MVC项目的单个及多个参数传参一文中&#xff0c;已经介绍过了对于不同个数的参数传参问题&#xff0c;原文链接如下&#xff1a; 【JavaEE】_Spring MVC 项目单个及多个参数传参-CSD…

2024高频前端面试题 Vue2 和 Vue3 篇

* Vue2 和 Vue3的区别&#xff1a; 1&#xff09;双向数据绑定原理的区别 2&#xff09;根节点的不同 Vue2只能一个根节点 Vue3在组件中可以放置多个根节点 3&#xff09;Vue3中采用composition API vue2:采用的选项型API(opsition API) vue3:采用的组合型API(composition A…

分类算法入门:以鸢尾花数据集为例

近两年人工智能技术蓬勃发展&#xff0c;OpenAI连续放出ChatGPT、Sora等“王炸”产品&#xff0c;大模型、AIGC等技术带来了革命性的提升&#xff0c;很多人认为人工智能将引领第四次工业革命。国内各大互联网公司也是重点投资布局&#xff0c;从个人角度来说要尽快跟上时代的潮…

Node.js最准确历史版本下载(以下载Node.js16.17.1版本为例)

先进入官网:Node.js https://nodejs.org/en 括号中LTS代表稳定版本. 嫌其他冗余博客帖子多&#xff0c;找起来费眼睛,可以到/release下载:Node.js,在blog后面加/release https://nodejs.org/en/blog/release/ 点击next翻页,跟上面同样的步骤

echarts柱状图可鼠标左击出现自定义弹框,右击隐藏弹框并阻止默认右击事件

每项x轴数据对应有两条柱图和一条阴影效果是学习其它博客得到的效果&#xff0c;这个是学习的原文链接&#xff1a;echarts两个合并柱体&#xff08;普通柱状图象形柱图&#xff09;共享一个柱体阴影 因为这次情况比较特殊&#xff0c;不仅需要自定义弹框内容&#xff0c;而且…

JAVA中YML:几个用法

项目有一些配置文件&#xff0c;ini、prop类型的配置文件都考虑过后&#xff0c;还是选择yml文件&#xff0c;如上图&#xff1a;xxconfig.yml。 要求&#xff1a; 1、允许实施人员手动配置 2、配置文件要能轻便的转化为一个JAVA对象 3、程序启动后&#xff0c;打印这些配置项&…

DQL语言学习(2024/3/5)one

1.基础查询&#xff1a; select 查询列表 from 表名&#xff1b; 查询列表可以是&#xff1a;①表中的字段、②常量值、③表达式、④函数 ①查询表中的单个字段&#xff0c;多个字段&#xff0c;所有字段 select *from 表名&#xff1b; ③查询表达式: select 100*98; ④…

【QT】QMainWindow介绍

QMainWindow Label&#xff1a;可以放静态/动态图片/链接 菜单栏工具栏浮动窗口和核心部件状态栏 Qdialog 模拟对话框非模拟对话框标准对话框和文件对话框 在创建文件时&#xff0c;路径一定不能有中文&#xff0c;否则会报错 双击下面的 Line Edit&#xff1a;只能显示一…

css使用

一、什么是CSS <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>div{color: red;}</style> </head> <body><div>Hello CSS</div></…