当前位置:首页 » 《关于电脑》 » 正文

【JavaSE】Java类与对象(一)

9 人参与  2024年10月12日 16:42  分类 : 《关于电脑》  评论

点击全文阅读


目录

一、类的定义与使用1.1 访问修饰限定符 二、类的实例化三、作者对类和对象以及面向对象的理解四、this引用4.1 this引用的特性 五、构造方法5.1 构造方法定义规则5.2 通过构造方法初始化成员对象5.3 idea快捷实现构造函数5.4 构造方法与this引用的联系
在这里插入图片描述

一、类的定义与使用

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

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 访问修饰限定符

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

二、类的实例化

类的实例化就是相当于创建一个对象了(跟c语言创建结构体变量一样),类的实例化通过关键字new来创建。实例化形式就是类名 变量名 = new 类名();
我们上面创建的Dog类来创建一个dog对象。
然后我们就可以通过 变量名.成员 来访问类中的成员变量和方法。

Dog dog = new Dog();dog.wag();

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

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

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

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

四、this引用

官方的一点解释就是:
this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
我的理解就是指出当前对象的成员的引用,防止乱套。例如我们写一个日期类,当我们将设置日期的成员函数的参数与成员变量同名idea就会出错,导致赋值不成功。
this引用

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

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引用正确使用

4.1 this引用的特性

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

五、构造方法

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

5.1 构造方法定义规则

名字与类名相同,没有返回值类型,设置为void也不行
一般情况下使用public修饰
可以重载
在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
如同上面的Data的构造方法定义结构如下:

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)。
快捷方式
2.然后鼠标左击Consructor
Consructor
3.然后根据需求点击几个参数的构造方法,用Ctrl+鼠标左击。
点击

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

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/171093.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1