【JavaSE】类和对象 | <( ̄︶ ̄)↗什么?还没对象?快来new一个!!

目录

一、理解面向对象

1.1 什么是OOP ?

1.2 OOP的优势

二、类和对象

2.1 概念理解

2.2 类的定义

2.3 类的实例化(创建对象)

2.4 小结

 三、this关键字

1 什么是this关键字

2 this关键字的基本使用

3 使用this关键字的注意事项

四、构造方法

1、什么是构造方法?

2、为什么要使用构造方法

3、构造方法的基本使用


一、理解面向对象

1.1 什么是OOP ?

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象!面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。OOP的核心概念包括:类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。

1.2 OOP的优势

  • 代码重用:通过继承,可以减少代码的重复编写。
  • 易于维护和扩展:封装和模块化使得代码更易于理解和维护。
  • 提高代码的可读性:通过将数据和行为封装在对象中,代码更加直观。
  • 灵活性:多态性提供了高度的灵活性,允许在不修改现有代码的情况下引入新的对象类型。

二、类和对象

2.1 概念理解

什么是类?

  • 类是对现实生活中一类具有共同属性和行为的事物的抽象。
  • 可以理解为对象的设计图或蓝图。
    在这里插入图片描述

什么是对象?

  • 对象是类的实体,是看得见摸得着的实体。
  • 类是对象的抽象,对象是类的实体。
    在这里插入图片描述

对象的属性和行为

  • 属性:对象具有的各种特征。
  • 行为:对象能够执行的操作。

在这里插入图片描述

2.2 类的定义

类是用来对一个实体(对象)来进行描述,主要描述该对象具有哪些属性、哪些功能,描述完成后计算机就可以识别了。

比如手机类
属性:手机品牌、价格、型号、内存、颜色等…
功能:打电话、上网等…

定义类需要使用关键字class,格式如下:

class className{
	//成员变量
	变量1的数据类型 变量1;
	变量2的数据类型 变量2;
	...
	//成员方法
	方法1;
	方法2;
	...
}

类中包含的内容称为类的内容。

  • 属性主要是用来描述类的,所以称为类的成员属性或者类的成员变量。
  • 方法主要说明类具有哪些功能,称为类的成员方法。

例如一个手机的类如下:

public class Phone {
    //成员属性
    public String brand;//品牌
    public String type;//型号
    public double price;//价格
    public String color;//颜色
    //...
    
    //成员方法
    public void call(){
        System.out.println("打电话...");
    }
    public void playGames(){
        System.out.println("玩游戏...");
    }
    //...
}

 注意事项:

  • 类名要采用大驼峰命名。
  • 一般一个文件当中只定义一个类。
  • main方法所在的类一般要使用public修饰。
  • public修饰的类必须要和文件名相同。

Java语言当中:

  • 【小驼峰法】适用于变量的命名。第一个单词首字母小写,其后每个单词首字母均大写,例如myName
  • 【大驼峰法】适用于类,函数,属性等的命名。第一个单词首字母大写,其后的每个单词首字母也是大写。例如MyName

【小结】:类,也可以认为是类型的意思,如int、double类型。定义了一个类,就相当于在计算机内定义了一种新的类型,只不过与int、double这些Java自带的内置类型不同是的是,类是我们自定义的一种新类型。

2.3 类的实例化(创建对象)

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

创建对象

  • 格式:类名 对象名 = new 类名();
  • 例如:Phone p = new Phone();

使用对象
1、使用成员变量

  • 格式:对象名 . 变量名
  • 例如:p.brand;

2、使用成员方法

  • 格式:对象名 . 方法名(参数)
  • 例如:p.playGames();

在这里插入图片描述

通过new关键字实例化一个对象:

通过new关键字实例化多个对象:

2.4 小结

        类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员,它算是一种自定义类型。类和我们平时看到的图纸一样,可以“一纸多用”、“一类多用” !一个类可以实例化多个对象,实例化出的对象,占用用实际的物理空间,存储类成员变量,类实例化出来的对象就像现实中使用建筑设计图建造出来的房子,是实际存在的实体。

 三、this关键字

1 什么是this关键字

        this关键字是Java中的一个特殊引用变量,它持有当前对象的引用。在类的非静态方法和构造函数中,可以使用this关键字访问当前对象的成员变量和方法。简单来说,this关键字可以理解为“当前对象自身”的代称。

2 this关键字的基本使用

1、访问当前对象的成员变量

 当成员变量和局部变量同名时,我们可以用this关键字去区分它们。

成员变量局部变量的区别:

        我们很容易混淆的成员变量和局部变量,我们可以从以下方面去理解它们:

区别成员变量局部变量
类中位置不同类里方法外方法内或者方法声明上
内存中位置不同堆内存栈内存
生命周期不同随着对象的存在而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同有默认的初始值

没有默认的初始值,必须先定义,赋值。才能用

2、调用当前对象的方法

 可以使用this关键字调用当前对象的方法

3、调用当前类的构造函数

在类的构造函数中,可以使用this关键字调用另一个构造函数。但是需要注意的是,调用构造函数的语句必须是构造函数中的第一条语句

 

3 使用this关键字的注意事项

  1. this的指向
    • this关键字代表了所属函数的调用者对象,即哪个对象在调用this所在的函数,this就代表哪个对象。
  2. 不能使用场景
    • this不能在类定义的外部使用,只能在类定义的方法、构造器或初始化块中使用。
  3. 避免混淆
    • 在编写代码时,应清晰地使用this关键字来避免成员变量与局部变量的混淆。
    • 同时,也应注意构造器之间的相互调用关系,避免死循环和无限递归。

四、构造方法

1、什么是构造方法?

构造方法是一种特殊类型的方法,用于在创建对象时初始化对象的状态。

构造方法具有以下特点

  • 名字与类名相同:构造方法的名称必须与类名相同,包括大小写。
  • 无返回类型:构造方法没有返回类型,甚至连 void 都没有。
  • 自动调用:当使用 new 关键字创建对象时,构造方法会自动被调用,并且再对象的生命周期内只调用一次。。
  • 重载:一个类可以有多个构造方法,这些构造方法可以有不同的参数列表,称为构造方法的重载

2、为什么要使用构造方法

主要有一下几个原因:

  1. 对象初始化:构造方法的主要目的是在创建对象时初始化其状态。通过为对象的属性设置初始值,构造方法确保对象在创建时具有有效的、预期的状态。

  2. 封装:构造方法支持封装原则,即隐藏对象的内部状态并仅通过公共方法(如getter和setter)来访问和修改这些状态。通过提供私有的构造方法,类可以控制其对象的创建过程,防止外部代码直接访问或修改对象的内部状态。

  3. 灵活性:通过提供多个构造方法(构造方法重载),类可以灵活地支持不同的初始化场景。例如,一个类可能有一个无参构造方法用于创建具有默认值的对象,以及一个或多个有参构造方法用于创建具有特定值的对象。

  4. 代码重用:构造方法允许在对象创建时执行初始化代码,这有助于避免在多个地方重复相同的初始化逻辑。通过将初始化逻辑封装在构造方法中,可以提高代码的可重用性和可维护性。

  5. 对象创建的一致性:使用构造方法可以确保所有对象在创建时都遵循相同的初始化过程。这有助于保持对象之间的一致性,并减少因手动初始化而导致的错误。

  6. 依赖注入:在复杂的系统中,构造方法常用于依赖注入(Dependency Injection),即通过将依赖项作为参数传递给构造方法来创建对象。这有助于降低类之间的耦合度,并提高系统的可测试性和可维护性。

  7. 防止非法状态:构造方法可以在创建对象时执行验证逻辑,以确保对象的状态是合法的。如果提供的参数无效,构造方法可以抛出异常或返回null(尽管在Java中通常不推荐后者),从而防止创建处于非法状态的对象。

  8. 单例模式:在某些情况下,构造方法可以用于实现单例模式(Singleton Pattern),即确保一个类只有一个实例。这通常通过将构造方法设为私有,并提供一个公共的静态方法来获取类的唯一实例来实现。

3、构造方法的基本使用

名字与类名相同:构造方法的名称必须与类名相同,包括大小写。

无返回类型:构造方法没有返回类型,甚至连 void 都没有。

自动调用:当使用 new 关键字创建对象时,构造方法会自动被调用,并且再对象的生命周期内只调用一次。

 

重载:一个类可以有多个构造方法,这些构造方法可以有不同的参数列表,称为构造方法的重载

 当我们没有写任何构造方法时,Java会帮我们提供一个默认的不带参数的构造方法,但是,一旦有了其它的构造方法,Java就不会再给我们提供不带参数的构造方法了       

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大白菜不空心

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

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

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

打赏作者

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

抵扣说明:

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

余额充值