[JAVA]类和对象
创始人
2025-05-31 08:29:58
0

目录

1.类

1.1类的初步认识

 1.2类的定义格式

1.3类的实例化

1.4类和对象的说明

2.this

2.1什么是this

2.2为什么要使用this

2.3this的实例运用

2.4this引用的特性 

3.对象的构造及初始化

3.1构造方法

3.2构造方法的特性


1.类

1.1类的初步认识

个人对于类的初步理解,类是对一种对象的描述,描述其属性和功能

像是:一个类为‘猫’,猫的毛色,眼睛的颜色,毛发长度,姓名,性别就是其属性,吃,跑,跳是一种行为(功能)。这些被一个类所包含在内

 1.2类的定义格式

// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量 定义在类内,方法外
method; // 行为 或者 成员方法
}

class为类的关键字

创建举例:

class Cat{//类的属性String hairColor;String name;int age;String breed;//类的成员方法public void eat(){System.out.println(name + " is eating.");}
}

注意事项:

  • 一般一个文件当中只定义一个类
  • main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
  • public修饰的类必须要和文件名相同

1.3类的实例化

 当我们定义一个类后,就相当于创建了一个类型,像是int类型,int[]类型。我们同样的可以去使用这个类来定义”对象“。

用类创建一个对象的过程,就称为类的实例化。

像定义一个数组,

int[] arr = new int[5]; //就创建了一个长度为5的数组

我们也可以使用new关键字来搭配,通过相应的类来创建对象。

class Cat{//类的属性String hairColor;String name;int age;String breed;//类的成员方法public void eat(){System.out.println(name + " is eating.");}
}public class Test{public static void main(String[] args){Cat cat = new Cat();cat.hairColor = "white";cat.name = "dudu";cat.age = 1;cat.breed = "Chinese garden cat";cat.eat();}
}

注意事项:

  • 我们可以用new关键字来创建一个对象
  • 通过‘.’来引用对象中的属性或方法
  • 可以通过一个类来创建多个对象(即猫只是一个统称,却有许许多多不同的猫咪)

1.4类和对象的说明

我们创建出的类,像是一种类型。较为抽象的,但一当实例化创建出一个对象就会实际占用存储空间。

2.this

2.1什么是this

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

2.2为什么要使用this

请看下面一段代码

class Cat{//类的属性String hairColor;String name;int age;String breed;//类的成员方法public void eat(){System.out.println(name + " is eating.");}public void setAge(int age){  //注意看这age = age;}
}
public class Test {public static void main(String[] args){Cat cat = new Cat();cat.hairColor = "white";cat.name = "dudu";//cat.age = 1;cat.breed = "Chinese garden cat";cat.eat();cat.setAge(1);System.out.println(cat.age); //还有这}
}

 age打印结果却是0(对象没初始化的默认值),因为在下面一段代码中

    public void setAge(int age){ age = age;}

他只给和成员变量名相同的形参赋值了,并不是对象中的属性赋值,这样就会导致赋值失败。

2.3this的实例运用

    public void setAge(int age){ this.age = age;}

当我们使用this, 规定age是实例化过程中当前对象的成员变量,即指定一定明确要的是对象中的age变量不是其他的乱七八糟。此时我们可以发现可以成功赋值了。

2.4this引用的特性 

  • this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  • this只能在"成员方法"中使用
  • 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
     

3.对象的构造及初始化

当我们在使用java的时候,方法内部定义一个局部变量的时候需要初始化,不然会编译出错。在上面提到过,初始化一个对象是以下的代码,但他们到底是怎么实现的呢?

Cat cat = new Cat();

3.1构造方法

构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

可能有人会想,既然要用到构造方法才能够初始化对象,但我们之前写一个类的时候并没有写上他的构造方法,那到底是怎么实现初始化的呢?

其实,如果在一个类中,用户没有自主的定义一个构造方法的话编译器会自动的生成一个不带参数的构造方法,这就是上面问题的原因。

class Cat{//类的属性String hairColor;String name;int age;String breed;//类的成员方法public void eat(){System.out.println(name + " is eating.");}//不带参数的构造方法  如果用户不写,则自动生成以下构造方法public Cat(){this.hairColor = null;this.name = null;this.age = 0;this.breed = null;}//带参数的构造方法,在new的时候输入参数可以实现初始化public Cat(String hairColor, String name, int aeg, String breed){this.hairColor = hairColor;this.name = name;this.age = age;this.breed = breed;}
}

其实初始化对象就是初始化对象中的成员,会给他们默认的初始值。

但只要用户写了构成方法,编译器就不会自动生成一个默认的构造方法。即,你写了一个带参数的构造方法,那么目前这个类中仅有唯一一个用户写的构造方法,如果你还想要一个不带参数的构造方法只能自己去实现了。

构造方法也可以实现方法的重载噢。

3.2构造方法的特性

  • 名字必须与类名相同
  • 没有返回值类型,设置为void也不行
  • 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
  • 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法
     

 

 

相关内容

热门资讯

MQTT.fx软件连接阿里云 阿里云注册及认证、MQTT下载阿里云:物联网平台 (aliyun.com)mqtt.f...
Linux应用开发之文件与IO... 与大多数操作系统一样,Linux为程序运行提供了大量的服务,包括打开文件...
2 Vue组件化编程 2.1. 模块与组件、模块化与组件化 模块 理解:向外提供特定功能的 js 程序&...
形容带风的成语 形容带风的成语  风的脾气很古怪,当它心平气和的时候,微风轻拂,给人以“风吻”,真像个恋人似的依人。...
地主之谊的成语解释 地主之谊的成语解释  成语解释: 即招待外地来的`客人;当地主人应尽的义务。地主:当地的主人。谊:情...
“等价连城”的意思 “等价连城”的意思 成语拼音: [děng jià lián chéng] ...
不考虑中间打一成语 不考虑中间(打一成语)谜面:不考虑中间(打一成语)谜底:瞻前顾后
day7—编程题 文章目录1.第一题1.1题目1.2思路1.3解题2.第二题2.1题目2.2涉及到的知识点2.3思路2...
形容女人白的词语 形容女人白的词语  真正有魅力的女人在事业上才华尽现,懂得如何在社交中显示自己的智慧、发挥自己的才干...
“家反宅乱”的意思 “家反宅乱”的意思 成语拼音: [jiā fǎn zhái luàn] ...
刘姓男孩取名   刘姓是百家姓当中的大姓,怎么样的名字才好听够霸气呢?下面是CN人才小编收集整理的刘姓男孩取名,欢...
“静言庸违”的意思 “静言庸违”的意思 成语拼音: [jìng yán yōng wéi] ...
rk3399+qt5的一个测试... 平台:rk3399+ucos20.0(firefly系统应该也可以) 屏幕本身...
新基建风向标:关于ChatGP...  进入2023年以来,ChatGPT大火。朋友圈里充斥着关于ChatGPT的各种消息&...
【并发】详解redis的inc... 一、前言 redis是一个单线程的服务,那么所有的命令肯定会排队被redis执行&#x...
“来来去去”的意思 “来来去去”的意思 成语拼音: [lái lái qù qù] ...
燮理阴阳的成语接龙 燮理阴阳的成语接龙  顺接:燮理阴阳 → 阳台云雨 → 雨意云情 → 情趣相得 → 得人死力 → 力...
形容老人的成语   白首之心 白发苍颜 七老八十 满面春风 雪鬓霜鬟  皓首苍颜 宝刀不老 养儿防老 矜贫恤独 庞眉...
“三十六策,走是上计”的意思 “三十六策,走是上计”的意思 成语拼音: [sān shí liù cè,zǒu shì...
深度学习目标检测项目实战(三)... 深度学习目标检测项目实战(三)—基于Yolov5的遥感图像目标检测 这里使用官方的yolov5.60...