Java se之类和对象

news2024/11/19 21:19:28

目录

  • 类的定义格式
  • 如何去自定义
  • this的引用
  • 如何初始化对象
  • 构造方法的定义和使用

类的定义格式

class ClassName{
//属性(成员变量)
//行为(成员方法)
}

1>变量与方法
1.成员变量:普通成员变量
静态成员变量
2.成员方法:普通成员方法
静态成员方法
其中的静态变量与方法,在后面的封装里面讲述

注意点
1>不建议一个Java文件里面创建多个类,建议是创建一个类放在一个Java文件里面
2>main方法所有的类一般要使用public修饰
3>public修饰的类必须和文件名相同
4>不要轻易去修改public修饰的类的名称,如果要修改就用工具来(在idea里面,就是先选中名字然后右键,点击refactor,再点击rename就可以改名,但是这个是只针对java只有一个类的时候)

如何去自定义

class PetDog{
    //这里就是属性
    public String name;
    public String color;

    //这下面是方法,也叫行为
    public void barks(){
        System.out.println(name + "旺旺~~~~");
    }
    public void wag(){
        System.out.println(name + "摇尾巴~~~");
    }

}
public class Test {
    public static void main(String[] args) {
        PetDog petDog = new PetDog();
        petDog.name = "小黄";
        petDog.color = "黄色";
        System.out.println(petDog.name);
        petDog.barks();
        petDog.wag();
    }
}

在这里面的话,我们在上面创建了一个类,我们去使用这个类的时候,我们是要去通过new实例化一个对象, 就是 PetDog petDog = new PetDog();这个, 我们在实例化的时候不止可以实例化一个,可以实例化无数个对象
然后里面的petDog.name = “小黄”;和 petDog.color = “黄色”;,就是我们在给我们实例化的对象附一个值,取名为小黄,颜色为黄色,
在后面的petDog.barks();和petDog.wag();这两个里面,因为我们那前面的时候就给名字和颜色进行初始化了,所以我们直接引用这两个方法就可以了,里面的name已经被赋值为小黄了
在这里插入图片描述
最后的运行结果就是这样的
注意
1>new关键字是用于创建一个对象的实例
2>使用 . 来访问对象中的属性和方法
3>同一个类可以创建多个实例

this的引用

public class Date {
    public int year;
    public int month;
    public int day;
    public void setDate(Date this, int y,int m,int d){
        this.year = y;
        this.month = m;
        this.day = d;
    }

    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(1999,1,1);

        Date date1 = new Date();
        date1.setDate(1899,1,1);
    }

}

this的特征:
1>this的类型对应类 类型引用,即哪个对象调用就是哪个对象引用类型
2>在成员方法中,this只能引用当前对象,不能再引用其他对象
3>在一个成员方法中,可以用this来调用另一个成员方法

只有一个方法,如何知道给哪个对象赋值??
答:通过Date this以及this.year= y这几个来进行判断给谁赋值

如何初始化对象

1>就地初始化
定义成员变量的时候,就直接初始化

2>构造方法:
注意点:
1.无返回值
2.方法名必须和类名相同
3.在整个对象的生命周期内,只调用一次(只有在对象实例化的时候才会调用)

class Student{
    public String name;
    public int age;
    public Student(){
        this.name = "张三";
        this.age = 9;
    }
}

像图中的public Student(){ }.就是一个构造方法,

实例化对象的关键两步?
1>为对象分配内存
2>调用合适的构造方法
注意这个合适!!!
因为我们在代码中,只写了成员变量,没有写任何一个构造方法的时候,java中会自动提供一个不带参数的构造方法,若是有存在构造方法,编译器就不会提供(总结就是救急不救穷);

作用:
对,对象中的成员进行初始化,并不负责开辟空间

构造方法的定义和使用

public Student(){
        this.name = "张三";
        this.age = 9;
        System.out.println("student().....");
    }

    public Student(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Student(String,int).......");
    }

上图这种,就存在两个构造方法
注意:
1>构造方法可以有多个,且构成重载关系
2> 当上面这两种情况都存在的时候,可以通过传参的方式来进行初始化

Student student = new Student("悟空",19);

或者如果使用idea的话,可以先右键,再Generate,然后constructor快捷生成构造方法

构造方法中,可以通过this来调用其他的构造方法来简化代码
例如

class Student{
    public String name;
    public int age;
    public Student(){
        this("张三",9);
    }
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
}
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println(student.name);
        System.out.println(student.age);
    }
}

在这里插入图片描述
可以像上面的代码一样,通过this来直接调用
但是1>只能出现在构造方法中
2>不能自己调用自己
3>只能出现在当前构造方法的第一行,如果有其他东西就会报错

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

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

相关文章

AtCoder ABC周赛2023 11/4 (Sat) D题题解

目录 原题截图: 题目大意: 主要思路: 注意事项(很多人再这个地方掉坑): 代码: 原题截图: 题目大意: 给你两个数组(A和B)长度都为n,然你求出一…

外汇天眼:什么时段做外汇交易最好,有所谓的“最佳时间点”吗?

在外汇交易的时候,很多手动交易的投资者不知道到底什么时间段操作交易最适合自己。 我们在进行选择最佳交易时间的时候,一定要明白各时间段的全球各个市场的交易状况,这样你才能分配好自己的时间。 当然在通过技术分析与基本分析选择好币种后…

快速入门FastAPI中的Field参数

快速入门FastAPI中的Field参数 在构建RESTful API时,定义资源模型是至关重要的。FastAPI是一个用于构建API的现代Python web框架,它使用Pydantic库来处理数据验证和模型。在这个过程中,Field 参数起着关键的作用。 本教程将向您介绍如何在F…

Hive HWI 配置

前言 1、下载安装好hive后,发现hive有hwi界面功能,研究下是否可以运行,于是使用hive –service hwi命令启动hwi界面报错。 启动hwi功能 2、访问192.168.126.110:9999/hwi,发现访问错误 一、HWI介绍 HWI(Hive Web Int…

“构建智慧城市,共享美好生活“2024杭州国际智慧城市展览会

智慧城市作为当今社会发展的必然趋势,正在被越来越多的企业和观众所关注。为了进一步推动智慧城市的发展,2024杭州智慧城市展览会将于4月份在杭州国际博览中心盛大召开。目前,招商工作已近半程,大批国内外知名企业踊跃报名&#x…

如何评估和提高网页速度?

页面内容的加载速度称为页面的网站速度或加载速度。拥有快速的网站加载时间对于搜索引擎优化至关重要。页面加载时间受多个变量影响,包括虚拟主机和页面大小。桌面版和移动版网站之间也存在性能差距。了解页面速度如何影响搜索引擎优化,从何处获取衡量工…

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(一)——创建Glue

1 通过Athena查询s3中的数据 此实验使用s3作为数据源 ETL: E extract 输入 T transform 转换 L load 输出 大纲 1 通过Athena查询s3中的数据1.1 架构图1.2 创建Glue数据库1.3 创建爬网程序1.4 创建表1.4.1 爬网程序创建表1.4.2 手动创建表 1…

Linux---网络时间服务器

本章主要介绍网络时间服务器。 使用chrony配置时间服务器配置chrony客户端向服务器同步时间 时间同步的必要性 一些服务对时间要求非常严格,例如,下图所示的由三台服务器搭建的ceph集群。 这三台服务器的时间必须保持一致,如果不一致&am…

dockerfile简单实践部署(jenkins,wordpress)

实现部署jenkins的流程 配置java环境,导入jenkins包,运行命令 java -jar jenkins包,这里为了减少进入jenkins的web端安装插件,将插件提前部署到容器内。 制作dockerfile 创建镜像所在的文件夹和Dockerfile文件 mkdir /test cd …

谷歌正式发布最强 AI 模型 Gemini

2023年12月6日,谷歌公司宣布推出其被认为是规模最大、功能最强大的人工智能模型 Gemini。 Gemini将分为三个不同的套件:Gemini Ultra、Gemini Pro和Gemini Nano。 Gemini Ultra被认为具备最强大的能力,Gemini Pro则可扩展至多任务&#x…

Flask template+Vue +项目中include引入其他模版(其他模版也会用到vue)的使用探索

项目背景是:团队的历史项目,是flask tmeplate写的前段页面。然后我在一个页面A.html中引入了vue文件,使用了vueelement_ui技术。现在想在此A页面中插入另外一个页面B.html的内容(试图tab分开),因为入口只有…

matplot绘图时图像太大报错但能保存

matplot绘图时,图像太大,可能在jupyter里面报错,但是图像可以保存。 报错:Image size of 12237479x675 pixels is too large. It must be less than 2^16 in each direction. 在这里插入图片描述

数字图像处理(实践篇)十九 漫水填充

目录 一 漫水填充算法--FloodFill 二 涉及的函数 三 实践 一 漫水填充算法--FloodFill FloodFill漫水填充算法就是选中与种子点相连接的区域,利用指定颜色进行区域颜色填充。可以通过设置连通方式或像素的范围控制填充的效果。通常是用来标记或者分离图像的一部…

(c语言进阶)联合

一.定义 联合体与结构体极其相似&#xff0c;只不过联合体的所有成员是共用同一块内存的。 二.联合体大小的计算 联合体共用内存的大小为联合体成员大小的最大值来定 #include<stdio.h> union Un {int a;char c; }; int main() {union Un u;printf("%zu",s…

Leetcode—213.打家劫舍II【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—213.打家劫舍II 算法思路 实现代码 class Solution { public:// 左闭右开int rob1(vector<int>& nums, int start, int end) {int n nums.size();int f0 0, f1 0, new_f 0;for(int i start; i < end…

新生儿出生缺陷筛查的关键注意事项

引言&#xff1a; 新生儿的出生缺陷是一个复杂而广泛的问题&#xff0c;及早的筛查和诊断对于预防和管理这些缺陷至关重要。出生缺陷可能涉及各个系统&#xff0c;包括心脏、神经、遗传等&#xff0c;因此及时而全面的筛查对新生儿的健康至关重要。本文将深入探讨新生儿出生缺…

AMC8竞赛第一题很简单?来看看历年的真题体会一下(含详细解析)

作为具有全球影响力的&#xff0c;面向中小学生的数学竞赛&#xff0c;AMC8在中国的知名度和参与人数也越来越多。 和国内的各种数学比赛相比&#xff0c;AMC8有一个很有意思的地方&#xff1a;全部是单项选择题&#xff0c;没有其他题型。所以不用担心做不完&#xff0c;毕竟…

利用proteus实现串口助手和arduino Mega 2560的串口通信

本例用到的proteus版本为8.13&#xff0c;ardunio IDE版本为2.2.1&#xff0c;虚拟串口vspd版本为7.2&#xff0c;串口助手SSCOM V5.13.1。软件的下载安装有很多教程&#xff0c;大家可以自行搜索&#xff0c;本文只介绍如何利用这4种软件在proteus中实现arduino Mega 2560的串…

P3613 【深基15.例2】寄包柜(map)

本题我之前尝试用过vector&#xff0c;但是内存会超&#xff0c;所以用了map就过了 注意二维map的写法 map<int,map<int,int>> mp map<a,map<b,c>> mp; 会创立一个mp[b][c] a;的数组&#xff0c;其中a&#xff0c;b&#xff0c;c为数据类型 #inc…

Java网络编程 *TCP与UDP协议*

网络编程 什么是计算机网络? 把分布在不同地理区域的具有独立功能的计算机,通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统 简单来说就是把不同地区的计算机通过设备连接起来,实现不同地区之前的数据传输 网络编程是干什么的? 网络…