直指类与对象

一、初识对象

1、什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

2、面向对象与面向过程

  1. 传统喝咖啡过程

zz在这里插入图片描述
在这里插入图片描述
2.现代喝咖啡过程
在这里插入图片描述
在这里插入图片描述
总共有四个对象:人、服务员、后台、奶茶。

整个过程主要是:人、服务员、后台交互完成的,人不需要关心咖啡是如何制作的。

二、类定义和使用

1、什么是实例化

定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自
带的内置类型,而类是用户自定义了一个新的类型,比如上述的:PetDog类和Student类。它们都是类(一种新定
义的类型)有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)。

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

public class Main{
 public static void main(String[] args) {
  PetDog dogh = new PetDog(); //通过new实例化对象
  dogh.name = "阿黄";
  dogh.color = "黑黄";
  dogh.barks();
  dogh.wag();
  PetDog dogs = new PetDog();
  dogs.name = "阿黄";
  dogs.color = "黑黄";
  dogs.barks();
  dogs.wag();
 }
}

注意事项

  • new 关键字用于创建一个对象的实例.
  • 使用 . 来访问对象中的属性和方法.
  • 同一个类可以创建多个实例.

2、类和对象的说明

  1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员.
  2. 类是一种自定义的类型,可以用来定义变量.
  3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。
  4. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。

四、this引用

1、为什么要有this引用

  1. 形参名不小心与成员变量名相同:
public void setDay(int year, int month, int day){
year = year;
month = month;
day = day;
}
  1. 三个对象都在调用setDate和printDate函数,但是这两个函数中没有任何有关对象的说明,setDate和printDate函数如何知道打印的是那个对象的数据呢?
    在这里插入图片描述

2、什么是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引用的是调用成员方法的对象。

3、 this引用的特性

  • this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  • this只能在"成员方法"中使用
  • 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
  • this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收。
    在这里插入图片描述

五、 对象的构造及初始化

1、如何初始化对象

在java方法内部定义一个局部变量时需要初始化,否则会报错;但是对象不需要初始化。

2、构造方法

2.1概念

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

  • 名字与类名相同,没有返回值类型,设置为void也不行
  • 一般情况下使用public修饰
  • 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次

注意:构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。

2.2特性

  • 名字必须与类名相同

  • 没有返回值类型,设置为void也不行

  • 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)

  • 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
    在这里插入图片描述
    上述两个构造方法:名字相同,参数列表不同,因此构成了方法重载。

  • 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
    注意:一旦用户定义,编译器则不再生成

  • 构造方法中,可以通过this调用其他构造方法来简化代码
    在这里插入图片描述

注意:

  • this(…)必须是构造方法中第一条语句
  • 不能形成环

3、默认初始化

即使没有给对象初始化,但是它会有一个默认值

4、就地初始化

在这里插入图片描述
注意:代码编译完成后,编译器会将所有给成员初始化的这些语句添加到各个构造函数中

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小琚子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值