当前位置: 首页 > news >正文

Java中的类和对象

1.类的定义和使用

2.如何实例化对象

3.this的使用&构造方法的创建和使用

4.对象的打印

5.包的创建

6.访问限定符(public protected private)

7.static关键字


1.类的定义和使用

在Java中,类其实是对一个对象进行描述,类里面包含对象的属性,有哪些功能行为,当我们封装实现好一个类的时候,想要调用某一个类里面的成员变量或者成员方法的时候,直接调用即可,就不需要多次的造轮子,那么我们如何创建一个类呢,我们需要通过一个关键字class来创建

注意,我们在创建类的时候,类名是大驼峰!!通过我们一个文件只写一个类,所以我们要写多个类时,可以创建多个包,包中分类好我们的类,类名必须和文件名相同

下面是我自己创建的一个学生类,学生的属性有学号,年龄,名字(这些就是属性)

下面就是学生类的功能行为(类的方法),有设置学生的信息,打印学生的信息

下面我们可以创建一个小猫的类,大家可以看看哪些是小猫的属性和小猫的行为

猫的名字,年龄,颜色属于猫类的属性

设置猫的基本信息,打印猫的基本信息属于行为(方法)

public class Cat {String name;//猫的名字int age;//猫的年龄String color;//猫的颜色//猫的叫声public void braks() {System.out.println("喵喵~");}//猫的基本属性public void base(String name, int age, String color) {this.name = name;this.age = age;this.color = color;}public void print() {System.out.println("名字:" + this.name);System.out.println("年龄:" + this.age);System.out.println("颜色:" + this.color);System.out.println("*****************************************");}}

2.如何实例化对象

当我们定义好一个类时,我们当然要使用到类里面的成员变量和成员方法,那么我们应该如何拿到类的成员变量和使用类的成员方法呢,需要我们实例化一个对象,即使用关键字new

在下面的代码中我们可以看到我实例化了4个对象,s1,s2,s3,s4

我们通过 . 来访问对象的成员变量和成员方法

在这里有2点要注意

  1.一个类可以实例化多个对象

  2.一个引用只能指向一个对象

  3.一个对象可以被多个引用所指向

3.this的使用&构造方法的创建和使用

上面的代码中,我们都是手动创建对对象的设置并且手动调用,非常麻烦,其实我们可以自己写一个构造方法,当我们调用实例化对象时,编译器会自动调用构造方法,构造方法其实就是帮我们初始化对象中的成员变量

1.手动实现构造方法,下面我写了俩个构造方法,一个是带参数的构造方法,一个是不带参数的构造方法,如果我们在一个类中不写任何的构造方法,编译器会自动帮我们生成一个不带参数的构造方法,即第一个Student(),如果我们写了构造方法,那么编译器不会帮我们生成,第二个带参数的构造方法,如果我们知道给成员变量初始化什么信息,那么我们就可以使用第二个构造方法,是实例化对象的时候就顺便给实参

注意事项:构造方法的名字要和类名相同,构造方法不加任何返回值

2.通过编译器生成构造方法

1.选择Generate

2.选择Constructor

3.按住ctrl,可以选择多个要初始化的成员变量

当我们创建好构造方法,实例化对象时候编译器就会自动调用

在构造方法中,如果成员变量的名称和形参的名字相同,那么我们就需要加this来确定对象,如果我们不加this,比如name = name,那么形参是不会赋值给成员变量的,所以我们需要加this来确定要传参的对象,this.name = name,那么this怎么知道谁指向他呢,很简单,谁实例化对象,那么this就指向谁,谁调用设置信息方法,谁调用print打印方法,那么this就指向哪个对象

4.对象的打印

在上面的代码中,我们可以通过手动写一个打印的成员方法,也可以通过编译器为我们生成一个打印的方法 --- 即重写toString,所以编译器很大程度上为我们提供开发效率

下面我教大家如何通过编译器为我们重写toString

1.点击Generate

2.选择toString

3.按住ctrl,可以选择多个要打印的成员变量

5.包的创建

在实际工程开发中,我们当然不可能之创建一个类,我们需要创建很多各类,但是每一个类的功能是不一样的,我们有需要把他们分类起来,不可能放在同一个文件夹下,所以我们所谓的 “包”,

其实就是一个文件夹,我们一开始的src创建的第一个类,就是放在默认的src包下

所以我们在工程中需要创建多个包,将我们的类分类在每个包中

那么如何创建包呢?--- 右键src -- new -- package

有几个注意事项:

1.在⽂件的最上⽅加上⼀个package语句指定该代码在哪个包中.

2.包名需要尽量指定成唯⼀的名字,通常会⽤公司的域名的颠倒形式 例如:哔哩哔哩(com.bilibili.www)

3.如果⼀个类没有package语句,则该类被放到⼀个默认包中,也就是src

6.访问限定符(public protected private)

当我们创建好包后,就可以在不同包下,将不同类分类写起来,在实际开发过程中,有一些成员变量我们是不想让外界可以直接拿到和修改的,就需要使用访问限定符修饰

1.public(共有) --- 任何地方都可以拿到和修改

2.private(私有) --- 只能在当前类中访问和修改

3.如果成员变量前不加任何修饰符 -- 只能在当前包中使用

对于private访问限定符使用区域非常有限,但是我们想要给外界使用,当时又不想要让他直接拿到我们的成员变量,我们就需要提供get和set

get可以让在其他区域拿到被private修饰的成员变量

set可以让在其他区域修改被private修饰的成员变量

对于get和set代码十分简单,编译器也可以为我们生成

下面我教大家如何在编译器自动生成get和set

1.选择Generate

2.我们可以只选择生成get或者set或者同时生成get和set

3.按住ctrl,可以选择多个想要生成set或者get的成员变量

7.static关键字

static -- 静态的意思,我们第一个程序是在main方法中运行的,还记得main函数的代码非常长吗?

里面就有static修饰,那么static是干嘛的呢?下面我们一起来看看

在Java中,被static修饰的成员或者方法,称之为静态成员,静态方法,其不属于某个具体的对象,是所有对象所共享的

当一个成员变量没有被static修饰的时候,他是存储在对象当中的,我们可以通过实例化对象对他进行访问而当一个成员变量被static修饰后,我们无法通过实例化对象进行访问,因为对象在堆上,他已经不在对象当中了,也就是说他不在堆上了,那么他在哪里呢? --- 方法区

当一个成员变量被static修饰后,我们无法通过实例化对象进行访问,那么要怎么访问呢?

static修饰的成员变量,需要通过类访问 --- 类变量,并且生命周期随类的创建而诞生,类的销毁而结束

对于静态方法也是,我们通过类名进行访问

这里我们有几个注意事项要注意

1.不能在静态方法中调用非静态方法 --- 因为静态方法不依赖对象,不需要实例化对象进行访问,而非静态方法依赖对象,需要实例化对象进行访问

如果非要在静态方法中访问非静态方法,那么实例化一个对象即可

2.非静态方法可以调用静态方法 -- 因为静态方法不依赖对象

3.静态方法中不能使用this,因为this需要告知指向哪个对象,而静态方法不依赖对象,所以在静态方法中使用this,那么this就不知道谁是对象

我们直接通过类进行访问,或者直接调用静态方法 --- 因为print是静态方法,main也是一个静态方法,都不依赖对象,可以直接访问

4.静态方法不能访问非静态成员变量 -- 因为非静态成员变量需要实例化对象进行访问,而静态方法不依赖对象

如果非要访问,那么就实例化对象进行访问即可

相关文章:

  • 【MYSQL】mysql单表亿级数据查询优化处理
  • 可变参数函数
  • 4.Consul服务注册与发现
  • 《接口和抽象类到底怎么选?设计原则与经典误区解析》
  • 【笔记】修复ImportError: cannot import name ‘Mapping‘ from ‘collections‘
  • YOLO 系列算法的参数量
  • 上交具身机器人的视觉运动导航!HTSCN:融合空间记忆与语义推理认知的导航策略
  • 时间的基本概念与相关技术二
  • 基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
  • Java开发——三层架构,分层耦合
  • 【图文教程】VMware Workstation 16.2.4 一站式解决方案
  • Apifox 5 月产品更新|数据模型支持查看「引用资源」、调试 AI 接口可实时预览 Markdown、性能优化
  • 木愚科技闪亮第63届高博会 全栈式智能教育解决方案助力教学升级
  • 如果是在服务器的tty2终端怎么查看登陆服务器的IP呢
  • 安全,稳定可靠的政企即时通讯数字化平台
  • CentOS 7 如何安装libsndfile?
  • Baklib重塑企业知识管理新范式
  • 项目代码工程优化之concurrent.futures异步编程(二)
  • pytorch部分函数理解
  • spark- ResultStage 和 ShuffleMapStage介绍
  • 网站建设中的图片/今日头条官网首页
  • 网站建设推销话术/为什么中国禁止谷歌浏览器
  • 做网站反复修改/seo品牌
  • 游戏网站免费入口/长沙专业做网站公司
  • 网站开发前景咋样/网站怎么收录
  • 湖南网站建设开发公司/关键词seo排名公司