javaSE:类和对象

面向对象

java是一种面向对象的编程语言,面向对象就是把能为我们所用的东西直接拿来使用,省去中间过程,比如洗衣服,要完成这一个动作,我们本来需要一个盆,放水,放衣服,换水,放洗衣粉,手搓,拧干,晾衣服,这是面向过程的,我们一步一步是怎么实现的,而面向对象,就相当于我们直接把衣服扔进洗衣机,按下开关,然后洗衣机就能帮我们实现我们的目的,我们不需要管洗衣机是怎么洗的,直接用就好了;

再比如我们需要键盘录入,我们就会通过import关键字导入java已经帮我们写好的util包中的Scanner类,再通过new关键字,new一个对象出来,就可以使用键盘录入的功能了

类的定义

如何定义一个类呢?

类是用来对一个实体(对象)来进行描述的,定义了类中都具有什么属性(成员变量)

在java中,必须先设计类,才能获得对象

通过关键字class

格式是:

public class 类名{

  1. 成员变量
  2. 成员方法
  3. 构造方法
  4. 代码块
  5. 内部类

}

举例:我们定义一个学生类,我们写一个标准的javabean,不认识的关键字都会在下面一一讲解;

public class Student {private String name;private int age;private String sex;private String phone;private String email;//空参构造public Student() {}//带参数的构造方法public Student(String name, int age, String sex, String phone, String email) {this.name = name;this.age = age;this.sex = sex;this.phone = phone;this.email = email;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String toString() {return "Student{name = " + name + ", age = " + age + ", sex = " + sex + ", phone = " + phone + ", email = " + email + "}";}//成员方法public void eat(){System.out.println(getName()+"饿了,想去吃大餐!");}}

我们自己设计的类中是不包括main接口的

封装

对象是什么,就得封装对应的数据,并提供数据对应的行为

怎么理解?

案例:人关门,门关上了这个行为是人关门,还是门自己关的呢?答案是门自己关的,人只是给门一个作用力,所以门的方法就得定义在门的类中

在Java中,就有很多已经封装好的类,比如String类,我们需要对字符串进行操作的时候,可以直接找对象,调用类中的方法即可

好处:让编程变得简单,降低学习成本,不用我们造轮子,直接用就行

privae关键字

引入

public class BoyFriend {  
String name;int age;
}
public class BoyfriendTest {public static void main(String[] args) {BoyFriend bf=new BoyFriend();bf.age=-18;}
}

这是不合理的引用, 也是不安全的,我们可以通过private去修饰成员变量

注:被private修饰的成员只能在本类中被访问

我们在测试类中想使用正确类该怎么办呢?

我们可以通过通过set和get方法允许别人使用

实例化对象

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

 

get()和set()方法

针对每一个成员变量,都要提供get()和set()方法

set:给成员变量赋值

get:对外提供成员变量的值

public void setName(String name){name=name;
}
public String getName(){return name;
}

我们在测试类中去调用setName()方法是会发现打印的是null,这是因为成员变量和局部变量重名了,根据结果很明显的知道,这里打印了成员变量,根据就近原则,找到成员变量的name

也就是遵循就近原则

实现一个标准的javabean

Idea提供了快速生成构造方法的快捷键

alt+Fn+insert

this引用

什么是this引用:this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。

我们如果一定要使用成员变量中的age呢该怎么办?

加个this关键字

那么正确给name赋值的方法是怎样的呢?

public String getName() {return name;}public void setName(String name) {//等号的右边局部变量表示测试类中调用方法传递的参数//等号的左边表示成员位置的namethis.name = name;}

特点 :

1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型

2. this只能在"成员方法"中使用

3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象

4.. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this负责来接收

this的本质:代表方法调用者的地址值

构造方法

格式:

public class 类名{

        修饰符 类名(参数){

                方法体;
        }

}

特点:

  1. 方法名与类名一致,在创建对象时,由编译器自动调用,并且 在整个对象的生命周期内只调用一次。
  2. 没有返回值类型,连void也没有
  3. 没有具体的返回值 

像前面写的代码

public class Student {private String name;private int age;private String sex;private String phone;private String email;//空参构造public Student() {}//带参数的构造方法public Student(String name, int age, String sex, String phone, String email) {this.name = name;this.age = age;this.sex = sex;this.phone = phone;this.email = email;}
}

:如果当前类中没有写任何构造方法,java虚拟机会自动生成一个空参构造(也就是不带参数的构造方法)

注: 当定义了构造方法,系统将不再提供默认的构造方法

系统会报错 

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

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

相关文章

【算法-程序的灵魂#谭浩强配套】(适合专升本、考研)

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。 无偿分享学习资料,需要的小伙伴评论区或私信dd。。。 无偿分享学习资料,需要的小伙伴评论区或私信dd。。。 完整资料如下: 1.一个程序主要包括以下两方面信息:程…

python中cv2,等等如何修改为中文字体显示,这里以人脸表情识别中文标签为例

中文字体显示 首先下载字体包部署字体包代码实现部分 想必大家在使用python过程中都会遇到,想要显示中文的时候,但是py基本上都是英文字体,下面我将给大家提供一个比较好的解决方案: 首先下载字体包 方法: 我使用的是…

亚信安全发布《2024年第一季度网络安全威胁报告》

亚信安全2024年第一季度网络安全威胁报告 一季度威胁概览 《亚信安全2024年第一季度网络安全威胁报告》的发布旨在从一个全面的视角解析当前的网络安全威胁环境。此报告通过详尽梳理和总结2024年第一季度的网络攻击威胁,目的是提供一个准确和直观的终端威胁感知。…

机器学习:葡萄酒品质预测

说明,此项目是我的期末大作业,包括了对数据集探索,预处理以及分类的各个详细过程与描述,代码简单,主要是一个分类项目的流程,并没有对模型进行深度研究,因此我写在这里。 目录 一、问题介绍 …

GPT5 如何使用?GPT5 如何订阅?GPT5 功能全面详解

结论是:GPT2 很糟糕 ,GPT3 很糟糕 ,GPT4 可以 ,但 GPT5 会很好。 ChatGPT5今年发布 GPT5发布的具有推理功能的不断发展,就像 iPhone 一样。 Sam Altman 于 17 日(当地时间),在世界…

Redis-分片集群存储及读取数据详解

文章目录 Redis分片集群是什么?Redis分片集群的存储及读取数据? 更多相关内容可查看 Redis分片集群是什么? Redis分片集群是一种分布式部署方式,通过将数据分散存储在多个Redis节点上,从而提高了系统的性能、扩展性和…

电子邮箱怎么注册?电子邮箱注册教程,只需要三步

电子邮箱在我们工作和生活中都是必不可少的沟通工具。电子邮箱怎么注册?电子邮箱的注册步骤是怎么样的?本文将从电子邮箱注册前的准备资料介绍,到具体电子邮箱注册的三个步骤进行详细讲解。 一、电子邮箱注册前的准备 电子邮箱是一个具有唯…

图像处理:图像噪声添加

文章目录 前言一、高斯噪声二、椒盐噪声三、泊松噪声四、斑点噪声五、指数噪声六、均匀噪声总结 前言 本文主要介绍几种添加图像噪声的方法,用于数据增强等操作。 以下图为例。 一、高斯噪声 高斯噪声就是给图片添加一个服从高斯分布的噪声,可以通过调…

类图及类的关系

类图(Class Diagram)是UML(Unified Modeling Language,统一建模语言)中的一种图,用于描述系统中类的静态结构,包括类的属性、方法以及类之间的关系。 一、类 类(Class)…

vue项目打包后也能配置静态资源路径

根目录public下新建config.json配置文件,如: {"VITE_URL_3DTILES_BIG":"http://192.168.1.1:88/abu1/tW4fYCyXi/tileset.json","VITE_URL_3DTILES_SMALL":"http://192.168.1.1:181/3dtile_200/tileset.json",&…

Linux day6 yum下载,systemctl,

yum命令 yum [-y] install wget 通过yum下载wget小工具 -y的意思是,如果有询问,自动确认(总是允许)。 yum remove wget 也可以通过这种方式卸载wget

Android:资源的管理,Glide图片加载框架的使用

目录 一,Android资源分类 1.使用res目录下的资源 res目录下资源的使用: 2.使用assets目录下的资源 assets目录下的资源的使用: 二,glide图片加载框架 1.glide简介 2.下载和设置 3.基本用法 4.占位符(Placehold…

阿里云域名备案流程

阿里云域名备案流程大致可以分为以下几个步骤,这些信息综合了不同来源的最新流程说明,确保了流程的时效性和准确性: UP贴心的附带了链接: 首次备案流程:ICP首次备案_备案(ICP Filing)-阿里云帮助中心 (aliyun.com) …

护眼 保护眼睛

高度近视600度的我,花了4个月时间度数降了50度,又花了一个多月的时间,双眼50度散光清零了。 然后就有人问我:散光都可以恢复吗? 我有点被问懵了,散光难道不容易恢复吗?直到我在网上查了一下,才发…

深入了解 npm 命令

文章目录 安装 npm初始化项目安装包更新包卸载包查看已安装的包查找包其他常用命令结论 在现代 JavaScript 开发中,npm(Node Package Manager)是一个不可或缺的工具。它是 Node.js 生态系统的一部分,用于管理 JavaScript 包和依赖…

【保姆级介绍自动化的讲解】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略

暗黑4可以搬砖吗?暗黑4怎么搬砖 搬砖攻略 暗黑破坏神4属于是暴雪旗下一款经典游戏IP,在全世界有着广泛的玩家群体,更是在今年暴雪国服宣布回归之后,吸引了一大批新玩家加入。今天小编就为大家带来暗黑4的详细搬砖教程。 现在我们…

效率提升80%!苏州金龙国际贸易数字提单试点成功

日前,江苏苏州自贸片区基于星火链网融合型基础设施和通商互信(TradeTrust)标准的数字提单试点成功,该批数字提单业务为苏州金龙客车对菲律宾的整车出口,由全球最大的集装箱运输公司马士基承运。随着车辆的成功交付&…

vue3专栏项目 -- 三、使用vue-router 和 vuex(下)

一、添加columnDetail 页面 首页有专栏列表(ColumnList组件),专栏列表中有很多专栏,然后点击某个专栏就进入专栏详情页(ColumnDetail组件),专栏详情页中有很多文章,点击某个文章就进…

51单片机:点亮一个LED灯

1.新建工程 选择AT89C52&#xff0c;在Atmel下显示的是See Microchip 并不需要添加启动文件到文件夹中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm汇编即更底层 程序编写好后 nop(); 该函数在这个头文件里面 #include <INTRINS.H> #include <R…