JavaSE(类和对象、this用法、构造方法)

  1. 面向对象

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
面向过程注重的是过程,在整个过程中所涉及的行为,就是功能。
面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来
面向对象就是用代码(类)来描述客观世界的事物的一种方式. 一个类主要包含一个事物的属性和行为

1. 注重洗衣服过程

JavaSE(类和对象、this用法、构造方法)
2.注重洗衣对象
JavaSE(类和对象、this用法、构造方法)
总共有四个对象:人、衣服、洗衣粉、洗衣机。

整个过程主要是:人、衣服、洗衣粉、洗衣机四个对象之间交互完成的,人不需要关心洗衣机具体是如何洗衣粉的,是如何甩干的。以面向对象的方式进行处理,就不需要关注洗衣服的过程, 是通过对象之间的交互来完成的

; 什么是类

对象从何而来,从类来,你可以想象成一个类型,面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识。这个类我们要定义出来,该怎么定义呢?需要开发人员告诉给计算机什么是洗衣机。
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥)

JavaSE(类和对象、this用法、构造方法)

比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。
属性:产品品牌,型号,产品重量,外观尺寸,颜色…

功能:洗衣,烘干、定时…
class为定义类的关键字,WashMachine为类的名字,{}中为类的主体(类体)。 类中的元素称为:成员属性(成员变量)。类中的函数称为:成员方法。

class WashMachine{
    public String brand;
    public String type;
    public double weight;
    public double length;
    public double width;
    public double height;
    public String color;
    public void washClothes(){
    System.out.println("洗衣功能");
    }
public void dryClothes(){
    System.out.println("脱水功能");
    }
public void setTime(){
    System.out.println("定时功能");
    }
}

类new个对象

用类型创建对象的过程,称为类的实例化,在java中采用 new关键字,配合类名来实例化对象。

public class ClassAndObject {
    public static void main(String[] args) {

        WashMachine xiyiji = new WashMachine();

         WashMachine xiyiji2 = new  WashMachine();
         WashMachine xiyiji3 = new  WashMachine();
         WashMachine xiyiji4 = new  WashMachine();

    }
}

JavaSE(类和对象、this用法、构造方法)

类.成员变量

使用 . 来访问对象中的属性和方法.

public class ClassAndObject {
    public static void main(String[] args) {
        WashMachine xiyiji = new WashMachine();
       xiyiji.brand="苹果牌";
       xiyiji.length=100;
       xiyiji.washClothes();

       System.out.println(xiyiji.length);
    }
}

类和对象的内存

JavaSE(类和对象、this用法、构造方法)

; public类名修改

注意事项:

  1. 一一个java文件当中只能定义一个public类
  2. main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
  3. public修饰的类必须要和文件名相同
  4. 不要轻易去修改public修饰的类的名称,要通过开发工具修改(src–>旧类名右击—>Refactor—->Rename—>新的类名)

JavaSE(类和对象、this用法、构造方法)

类的说法易错点

JavaSE(类和对象、this用法、构造方法)

; 2.this

为什么要有this引用

定义了一个日期类,然后main方法中创建了三个对象,并通过Date类中的成员方法对对象进行设置和打
印,代码整体逻辑非常简单,没有任何问题。

public class Date {
    public int year;
    public int month;
    public int day;
    public void setDay(int y, int m, int d){
    year = y;
    month = m;
    day = d;
    }
    public void printDate(){
    System.out.println(year + "/" + month + "/" + day);
    }
    public static void main(String[] args) {

    Date d1 = new Date();
    Date d2 = new Date();
    Date d3 = new Date();

    d1.setDay(2020,9,15);
    d2.setDay(2020,9,16);
    d3.setDay(2020,9,17);

    d1.printDate();
    d2.printDate();
    d3.printDate();
    }
}

但是细思之下有以下两个疑问?

  1. 形参名不小心与成员变量名相同
    public void setDay(int year, int month, int day){
    year = year;
    month = month;
    day = day;
    }
    结果就不能赋值,全部都是默认值0,原因是形参是局部变量,局部变量优先使用,不能对成员变量进行赋值。
  2. 三个对象都在调用setDate和printDate函数, 但是这两个函数中没有任何有关对象的说明,setDate和
    printDate函数如何知道打印的是那个对象的数据呢?

this引用的特性

  1. this的类型:对应类类型引用,即 哪个对象调用就是哪个对象的引用类型
    JavaSE(类和对象、this用法、构造方法)
  2. this只能在”成员方法”中使用
  3. 在”成员方法”中,this只能引用当前对象,不能再引用其他对象
  4. this是”成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this负责来接收
    JavaSE(类和对象、this用法、构造方法)

JavaSE(类和对象、this用法、构造方法)

; this的用法

1.this.data 调用当前的对象的 属性/字段/成员变量
2.this.func() 调用当前的对象的方法
3.this() 调用当前对象的其他构造方法====类( )

class Date{
    public int year;

    public Date(){
        this();

        System.out.println("不带参数的构造方法");
   }
}

  1. 构造方法

什么是构造方法?

这个方法没有返回值, 方法名和类名是一样(都是Date)的。

  1. 名字必须与类名相同
  2. 没有返回值类型,设置为void也不行
  3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
  4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
public Date(){
    System.out.println("不带参数的构造方法");
}
public Date(int x,char y,double z){
    System.out.println("带参数的构造方法");
}
系统提供的:
public Date(){

}

不带参数:当你什么构造方法都没有写的时候,系统是默认给你写上一个不带参数的。
带参数:肯定就是你写的,也只会调用你写的,那系统就不会多此一举再提供了。
构造方法 只会调用一次Date d = new Date();实例化对象调用

构造方法的作用?

在构造函数时就可以去初始化了,而不需要去构造一个类似于setDate这样的函数。

public class Date {
    public int year;
    public int month;
    public int day;
    public Date(int year,int month,int day) {

        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("调用了带有3个参数的构造方法!");
        this.show();
    }
    public void setDate(int year,int month,int day) {
        this.show();
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public void show() {
        System.out.println("年:"+this.year+" 月:"+this.month+" 日:"+this.day);
    }
    public static void main(String[] args) {
        Date date = new Date(2022,12,23);
        date.show();
    }

}
输出结果:
调用了带有3个参数的构造方法!
年:2022 月:12 日:23
年:2022 月:12 日:23

通过this调用其他构造方法来简化代

public class Date {
    public int year;
    public int month;
    public int day;

    public Date(){

        this(1900, 1, 1);

    }

    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }
}
 public static void main(String[] args) {
        Date date = new Date();

Original: https://blog.csdn.net/qq_40599849/article/details/128328646
Author: 我见青山多妩媚,料青山见我应如是!
Title: JavaSE(类和对象、this用法、构造方法)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/777388/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球