类和对象 详解「Java」

news/2024/11/16 21:42:00/

目录

1.前言

🍑2.类的定义

🍎2.1定义一个类

🍎2.2类产生对象

🍑3.this引用

🍑 4.对象的构造和初始化

🍎 4.1初始化变量

🍎4.2对象的构造

❤️4.2.1没有参数的构造方法

❤️4.2.2带有参数的构造方法


🍑1.前言

要学习类和对象,首先要了解面向对象和面向过程的区别,Java和C++就是面向对象的语言。我个人的理解:

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。(可理解为微观角度)

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(可理解为宏观角度)

🍑2.类的定义

类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。必须先定义出一个类,我们才能实例出对象。

🍎2.1定义一个类

当我们定义了一个类,就相当于在计算机中定义了一种新的类型,与int和double相似,只不过int和double是计算机中自带的内置类型,而类是由用户自定义的。

再定义类名时使用大驼峰,给大家看一下基本的语法

      class ClassName{//成员变量//成员方法}

可能这样还不是很清楚,我们举一只小狗的例子,一起来定义一个小狗的类。我们都知道小狗有很多类型,名字不同,年龄不同,颜色也不同,这些就是我们的成员变量。小狗有很多种技能,有的能摇尾巴,有的能旺旺叫

class Dog {//1、字段/属性【成员变量】:类的内部  方法的外部public String name;//名字public int age;//年龄public String color;//颜色//2、行为 / 方法【成员方法】public void wag() {//摇尾巴System.out.println(name+" 摇尾巴!");}public void bark() {//旺旺System.out.println(name+" 旺旺!");}
}

在Java的开发过程中,一般一个Java文件只写一个类。

🍎2.2类产生对象

我们通常将类产生对象的过程称为实例化,那有了类我们要如何产生对象呢?

最简单的方法就是用new语句来产生一个对象(也就是我们常说的new一个对象)

Dog dog = new Dog();
Dog dog2 = new Dog();

创建成功后,会在栈上开辟一块内存给 dog,它会存入堆的一块地址,之后我们便可以对对象中的属性进行赋值

 public static void main(String[] args) {//通过new关键字 实例化了一个对象Dog dog = new Dog();dog.name = "郑立群";dog.color = "白色";dog.age = 2;dog.wag();dog.bark();dog.show();Dog dog2 = new Dog();dog2.name = "大漠叔叔";dog2.age = 44;dog2.color = "黑色";dog2.show();Dog dog3 = new Dog();Dog dog4 = new Dog();//通过一个类  可以实例化 多个对象}

🍑3.this引用

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

public class Date {int year;int month;int day;public void setDate(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);}public static void main(String[] args) {Date date1 = new Date();date1.setDate(2020,5,8);date1.printDate();Date date2 = new Date();date2.setDate(2021,5,8);date2.printDate();Date date3 = new Date();date3.setDate(2022,5,8);date3.printDate();}
}

也就是说this是指向我们的对象Date。

这里找到了其他人写的this有关的资料,放出来供大家参考

this关键字:

关键字,代表当前类对象
可以代表当前类还没有产成的对象,代表当前类刚创建的对象,代表当前正在使用的对象,this是灵活的指代,是虚拟的,可以指代当前类正在活动的对象
当一个类被创建的时候,java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this,
因为this在对象创建的时候才有,所以this只能在类中的非静态方法中使用,静态方法和静态代码块中绝对不能出现this,因为静态资源和类关联,this和类对象关联,所以不同的对象不同的this,this指针是灵活的指代地址,最初始没有地址的是虚拟的
this语句–在同一个类中的构造方法里调用其他别的构造方法—必须要在首行----this(参数)
this可以调用其他的非构造方法,this.m();
由于子类可以获取父类的属性,所以this也可以在子类中出现调用父类的方法,一个类中可以出现多个this语句
this只能出现在方法中,作为变量的应用调用其他资源
this.用于创建对象的时候进行属性的初始化,用于指定自身,方法调用的对象可以是this

🍑 4.对象的构造和初始化

🍎 4.1初始化变量

在Java方法内部定义一个局部变量时,必须要初始化,否则会编译错误。

🍎4.2对象的构造

实例化一个对象分为两步:1. 为这个对象分配内存  2. 调用合适的构造方法

构造方法不止一个,对象的生成一定会构造方法。再构造这个对象的时候也可以给定一些默认值。构造的方法名字与类相同,没有返回值类型,一般情况下用public修饰。

 如果没有给它赋值,那么这个函数就会帮你将数字初始化为0

❤️4.2.1没有参数的构造方法

 public Date() {this.year = 1992;this.month = 9;this.day = 0;System.out.println("不带参数的构造方法!");}

❤️4.2.2带有参数的构造方法

public Date(int year,int month,int day) {this.year = year;this.month = month;this.day = day;System.out.println("调用带有3个参数的构造方法!");}

 可以传参进入这个方法,来给对象赋值。

 这两种方法可以同时存在,在构造第二种方法的时候,就生成了方法的重载。

方法的重载:1. 方法名相同   2. 参数列表不同:个数,类型,顺序   3.和返回值无关

如果用户没有显示定义,编译器会形成一套默认的构造方法,生成默认的构造方法一定是无参的。

对于成员的赋值:👇

1.定义字段的时候,同时初始化-->就地初始化

2.不初始化--> 0

3.在类外,通过对象的引用直接赋值。dog.name = "haha";

 4.通过构造方法初始化


http://www.ppmy.cn/news/561097.html

相关文章

考研高数考点总结

一.极限 1.函数的四性&#xff1a; 单调性、周期性、奇偶性、有界性&#xff1a; 周期性、奇偶性各记住一个结论。 有界性判定&#xff1a; 1.定义法&#xff1a;-M<绝对值<M2.函数性质&#xff1a;函数在闭区间上连续一定有界 闭区间连续》开区间连续加左端点右极限…

Java性能权威指南-总结17

Java性能权威指南-总结17 线程与同步的性能线程池与ThreadPoolExecutor线程池任务大小设置ThreadPoolExecutor的大小 线程同步同步的代价 线程与同步的性能 线程池与ThreadPoolExecutor 线程池任务大小 等待线程池来执行的任务会被保存到某类队列或列表中&#xff1b;当池中…

k8s kubectl常用命令

kubectl 是 Kubernetes 的一个命令行管理工具&#xff0c;可用于 Kubernetes 上的应用部署和日常管理。本文列举了 9 个常见的 kubectl 命令&#xff0c;并总结了一些使用技巧&#xff0c;希望可以帮助系统管理员简化管理工作。 一、使用 Kubectl 查询、创建、编辑和删除资源 …

解决edge浏览器主页被联想网址篡改问题

新买回来的电脑&#xff0c;刚打开浏览器&#xff0c;主页是这个样子&#xff01;&#xff01;&#xff01;&#xff01;还取消不了&#xff0c;是不是很无语。。。 1.打开&#xff1a;联想电脑管家 取消上网主页 锁定锁 2.打开浏览器 关闭浏览器&#xff0c;重新打开 上网…

HTML+CSS实现拼多多官网首页

写得一般&#xff0c;愿与大家共同进步&#xff08;不会制作GIF图片&#xff09; 一、 以下为部分实现图片 二、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatib…

联想摄像头无法一直运行

问题&#xff1a; 摄像头有间隔地运行&#xff0c;指示灯一会亮&#xff0c;一会不亮&#xff1b;在浏览器进行面试的时候&#xff0c;摄像头只照一次就不运行了。 解决&#xff1a; 找了无数方法&#xff0c;最终还是驱动的问题。 1&#xff09; 去联想官网下载驱动&#…

联想电脑管家不显示开机时间_联想电脑怎么设置显示开机时间

电脑管家每次在开机的时候会提示开机用时&#xff0c;这个功能怎么设置呢?下面由小编为你整理了的相关方法&#xff0c;希望对你有帮助!电脑管家设置提示开机时间步骤如下1首先&#xff0c;没有此软件的朋友&#xff0c;先从百度官网下载该软件。百度搜索电脑管家&#xff0c;…

搜索下拉框推广优化如何做?下拉联想词有什么优势?

下拉词也叫推荐词&#xff0c;就是让网友输入更少的词&#xff0c;看到更多与搜索词相关的推荐词。例如百度下拉词是百度搜索为方便用户搜索而提供的关键字关联服务&#xff0c;提高了用户的搜索效率。大多数人在搜索关键字时不知道如何组织语言以达到更准确的搜索目的&#xf…