【JavaSE】Java类与对象(一)

CSDN 2024-10-25 17:35:01 阅读 80

目录

一、类的定义与使用1.1 访问修饰限定符

二、类的实例化三、作者对类和对象以及面向对象的理解四、this引用4.1 this引用的特性

五、构造方法5.1 构造方法定义规则5.2 通过构造方法初始化成员对象5.3 idea快捷实现构造函数5.4 构造方法与this引用的联系

在这里插入图片描述

一、类的定义与使用

在Java中使用关键字class定义一个类,格式如下:

<code>class 类名{

// 成员变量/字段/属性

//成员方法/行为

}

Java中类和c语言中的结构体有点类似,

在Java中类名一般采用大驼峰(每个首字母大写)的形式,并且一个Java文件中就只写一个类

成员变量与一般变量的定义相比要在前面加上访问修饰限定符

方法的定义与前文介绍的方法定义相同。

例如我们定义一个Dog类:

class Dog {

public String name;//名字

public String color;//颜色

// 狗的属性

public void barks() {

System.out.println(name + ": 旺旺旺~~~");

}

// 狗的行为

public void wag() {

System.out.println(name + ": 摇尾巴~~~");

}

}

1.1 访问修饰限定符

访问修饰限定符</p><p>

这张图片就是反应访问修饰限定符及其作用范围。有许多东西还没介绍过,例如包和子类。在后面会一一介绍,还有default是默认访问修饰限定符,就是不加上访问修饰限定符时的权限。

二、类的实例化

类的实例化就是相当于创建一个对象了(跟c语言创建结构体变量一样),类的实例化通过关键字new来创建。实例化形式就是<code>类名 变量名 = new 类名();。

我们上面创建的Dog类来创建一个dog对象。

然后我们就可以通过 变量名.成员 来访问类中的成员变量和方法

Dog dog = new Dog();

dog.wag();

三、作者对类和对象以及面向对象的理解

就拿人来举例,我认为类就相当于人总称而对象就相当于个人个体,类就像它的名字一样是一类事物共有的东西抽象而出,而对象就是具体的。

面向对象就是通过对象之间互相交互来实现功能,面向过程就是将实现一件事的每一步都一一实现。

就拿洗衣服举例,早些时候洗衣服人们都是,泡水-放洗衣粉-搓洗-清洗,这就像是面向过程一样,事事亲为。而现在就是放衣服进洗衣机,这就是人对象和洗衣机对象交互,具体洗衣过程不去了解 。

四、this引用

官方的一点解释就是:

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

我的理解就是指出当前对象的成员的引用,防止乱套。例如我们写一个日期类,当我们将设置日期的成员函数的参数与成员变量同名idea就会出错,导致赋值不成功。

this引用</p><p>

但我们如果像下面这样使用this引用就不会出现这种情况。所以习惯加上this引用。

<code>

public class Date {

public int year;

public int month;

public int day;

public void setDay(int year, int month, int day){

this.year = year;

this.month = month;

this.day = day;

}

public void printDate(){

System.out.println(this.year + "/" + this.month + "/" + this.day);

}

}

this引用正确使用</p><p>

4.1 this引用的特性

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

五、构造方法

像我们学习c语言结构体时对成员变量的初始化都是使用成员函数,向上面我们Data类时我们也是定义了一个setDay方法来初始化成员变量,但是在Java中我们就可以使用构造方法来完成这个件事情。构造方法只会在实例化对象时调用一次。

5.1 构造方法定义规则

名字与类名相同,没有返回值类型,设置为void也不行

一般情况下使用public修饰

可以重载

在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次

如同上面的Data的构造方法定义结构如下:

<code>public Data(int year, int month, int day){

this.year = year;

this.month = month;

this.day = day;

}

5.2 通过构造方法初始化成员对象

如此在实例化对象时就可以直接传参数来初始化成员对象,

Data data = new Data(2024,5,12);

但是我们此时就不能在像原来不传参的实例化一样调用了,原因在于如果我们自己不写构造方法那idea自己会给我们提供一个不带参的构造方法。如果要调用就要自己实现了。

5.3 idea快捷实现构造函数

1.鼠标右键,然后点击Generate,或者(Alt+Insert)。

快捷方式</p><p>

2.然后鼠标左击Consructor

Consructor</p><p>

3.然后根据需求点击几个参数的构造方法,用Ctrl+鼠标左击。

点击</p><p>

5.4 构造方法与this引用的联系

如果构造方法中要用this(…)来调用其他构造方法必须放在第一句。且不能形成环,你调用我,我调用你。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。