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) {

        //等号的右边局部变量表示测试类中调用方法传递的参数
        //等号的左边表示成员位置的name
        this.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虚拟机会自动生成一个空参构造(也就是不带参数的构造方法)

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

系统会报错 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 cloudflare 免费服务,搭建临时邮箱,无需暴露自己的真实邮箱地址,保护个人隐私

使用 cloudflare 免费服务,搭建临时邮箱 地址 在线演示 🌐Github地址 https://github.com/find-xposed-magisk/cloudflare_temp_email 功能/TODO Cloudflare D1 作为数据库 使用 Cloudflare Pages 部署前端 使用 Cloudflare Workers 部署后端 email 转…

一文讲懂“预测滞后性”:详细解析

当我们谈论预测时,经常会遇到一个现象叫做“预测滞后性”。简单来说,预测滞后性指的是预测结果往往落后于实际发生的事件。这可能是由于数据收集、模型训练、预测算法的时间延迟,或者是由于预测模型本身的特性导致的。 目录 一、预测滞后性的…

Google I/O 2024:有关AI的一切已公布|TodayAI

2024年谷歌I/O大会圆满落幕,谷歌在会上发布了一系列更新,涵盖从最新的人工智能技术到Android系统的多项改进。此次大会特别关注于谷歌的Gemini人工智能模型,并详细介绍了这些模型如何被融入到Workspace、Chrome等多个应用程序中,展…

IT行业现状与未来趋势分析

IT行业现状与未来趋势显示出持续的活力和变革,以下是上大学网(www.sdaxue.com)关于IT行业现状与未来趋势分析,供大家参考。 当前现状: 市场需求持续增长:随着信息时代的深入发展,各行各业对信息…

汽车电子笔记之-012:旋变工作原理及软解码硬解码

目录 1、旋变 1.1、激励的产生 1.2、旋变的标定 2、旋变解码 2.1、旋变硬解码 2.2、软解码 1、旋变 旋转变压器(旋变),是电机控制中常用的一种位置传感器,用来反应电机的转子位置,提供给软件做电机控制等相关算法…

Nginx+Keepalived高可用集群

NginxKeepalived高可用集群 服务器准备 服务器名IP软件包主从n1RIP 192.168.99.111 VIP 192.168.99.200nginx keepaliveMASTERn2RIP192.168.99.122 VIP 192.168.99.200nginx keepalivedh1RIP 192.168.99.133 VIP 192.168.99.200httpdh2RIP 192.168.32.144 VIP 192.168.99.200h…

三.Ubuntu安装MySql数据库

三.Ubuntu安装MySql数据库 1.首先进入Console,登录Ubuntu系统后,更新源,命令:apt update,如图所示。 安装MySQL命令:apt install mysql-server 执行期间按回车,进行下一步,执行过程如图所示: 选择yes或no,此步选择yes 安装完成。 2.提高MySQL安全性,该命令…

2024-简单点-MediaCrawler解构

MediaCrawler var.pyrecv_sms.pyasync_db.pydb.pymain.pybase/base_crawler.pyconfig/baseconfig.pyconfig/db_config.py有待更新 var.py from asyncio.tasks import Task from contextvars import ContextVar from typing import Listimport aiomysqlfrom async_db import As…

【脚本】使用脚本备份docker中部署的mysql数据库

v1版本明文密码方式: #!/bin/bash# 定义 MySQL 容器名称和数据库信息 container_name"mysql_container" db_user"root" db_password"your_password"# 定义要备份的数据库列表 databases("database1" "database2"…

交换机组网最常见的8大故障及解决方式

有朋友多次提到网络故障,其中在交换机组网时常见的故障比较多,为了便于大家排除这些故障,在此介绍一些常见的典型故障案例及处理思路。 故障1:交换机刚加电时网络无法通信 【故障现象】 交换机刚刚开启的时候无法连接至其他网络…

摸鱼大数据——Linux搭建大数据环境(安装zooKeeper和zookeeper shell命令)五

安装zookeeper软件 1.上传软件 使用CRT等客户端远程上传 zookeeper-3.4.6.tar.gz 文件到/export/software目录下 2.解压软件 [rootnode1 ~]# cd /export/software/ [rootnode1 software]# tar -xzvf zookeeper-3.4.6.tar.gz -C /export/server/ [rootnode1 software]# cd /ex…

用友GRP-U8 userInfoWeb SQL注入致RCE漏洞复现 (XVE-2024-10539)

0x01 产品简介 用友GRP-U8R10行政事业内控管理软件是用友公司专注于国家电子政务事业,基于云计算技术所推出的新一代产品,是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8R10行政事业内控管理软件 userInfoWeb接口处存在SQL注入漏洞,未授权的…

自由职业是种怎样的体验?普通人如何成为一名自由职业者?

自由职业在哪都能办公自由职业在哪都要办公。 放弃幻想,没有不辛苦的工作,5年经验后端开发程序员,已经从事自由职业1年半,今天就来客观分享一下自由职业的利与弊。 时间自由,减少中间商赚差价 自由职业最让人羡慕的就…

电机完美控制的感觉如何【应用案例】

当电机控制技术成为人体的一部分时,对控制系统的组件尺寸和可靠性要求将极大提高。得益于集成式FOC控制系统组件,第一款具有两个活动关节的义肢得以在短时间内完成—— 赶上在苏黎世举办的全球半机械人奥运会(Cybathlon)。 失去肢体显然会对一个人的生活…

GPT4o速测:约0.5秒延迟的多模态能力

文章目录 1. 测评2. IntroReference 没有剪辑,约0.5秒延迟的多模态能力。 1. 测评 推理速度异常快,比之前快了大概两三倍,对产品端来说是个很好的事情,想用gpt4级别性能终于可以少讨论几句时延影响用户体验了模型指令遵从能力变强…

GPT3.5、GPT4、GPT4o的性能对比

理论总结 随着版本的升级,模型在参数数量、语言理解能力、生成文本质量、多模态能力、推理能力等方面均有显著提升。GPT-4.0作为最新改进版,提供了最先进的功能和性能。 实际对比 1.1.GPT3.5 1.2.GPT4 1.3.GPT4o 在语义理解上,无差别。 下面测试下代码能力。 测试问题 我…

电脑的录屏功能在哪?一篇文章教你快速定位

“电脑录屏功能在哪里呀?因为需要录制一些教学视频,急需用到电脑的录屏功能。我已经在电脑上翻箱倒柜地找了好几个小时,可还是没有找到。时间紧迫,这个任务对我来说非常重要,我现在感到非常焦虑,希望大家帮…

YOLOv8独家改进:逐元素乘法(star operation)二次创新 | 微软新作StarNet:超强轻量级Backbone CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,逐元素乘法(star operation)在性能上始终优于求和,基于star operation块做二次创新 💡💡💡如何跟YOLOv8结合:替代YOLOv8的C2f,结构图如下 收录 YOLOv8…

压力给到 Google,OpenAI 发布 GPT-4o 来了

北京时间5月14日凌晨1点,OpenAI 开启了今年的第一次直播,根据官方消息,这次旨在演示 ChatGPT 和 GPT-4 的升级内容。在早些时候 Sam Altman 在 X 上已经明确,「我们一直在努力开发一些我们认为人们会喜欢的新东西,对我…

炫富神器,简单无脑粘贴复制,闷声发财,当天见收益,无上限封顶

项目主打简单、暴力、易操作、可复制,单人可做、不靠关系走门路、不重投资、可复制放大! 今天给大家带来的这个项目,有点暴力,请先做好心理准备!谨慎观看!! 这个项目原理是利用软件生成炫富视频…