首页 > 其他分享 >类和对象~

类和对象~

时间:2024-09-03 17:53:31浏览次数:13  
标签:对象 month int Date public d1

类和对象

1.类定义和使用

2.类的实例化

3.this引用


1.类定义和使用
1.1 简单认识类

   类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有那些属性(外观尺寸等),有那些功能(行为等)。
比如:狗,他是一个动物,在java中可以看成一个类别
属性:狗的名字,年龄,颜色
行为: 汪汪叫,摇尾巴
在java语言中,如何对上述狗类来进行定义呢?

1.2 类的定义格式

   定义类时需要用到class关键字

//创建类
class Dog{
  field; //属性或者成员变量
  method; //行为或者成员方法
    }

  class为定义类的关键字,Dog为类的名字,{}为类的主体。
  类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员变量,方法主要说明类具有哪些功能,称为类的成员方法

class Dog {
    //狗的属性
    public String name; //名字
    public int age;//年龄
    public String colour;//颜色
    
    //狗的行为
    public void bark(){
        System.out.println(name+"汪汪叫~~~");
    } 
    public void wag(){
        System.out.println(name+"摇尾巴~~~");
    }
}

以上采用了java语言将狗类在计算机中定义完成,经过javac编译之后形成 .class文件,在jvm的基础上计算机就可以识别了。

注意事项:

  1. 一个文件当中只定义一个类
  2. main方法所在的类一般要用public修饰
  3. public修饰的类要与文件名相同

2.类的实例化
2.1 什么是实例化

  定义一个类相当于在计算机中定义了一个新类型,与intdouble类似,只不过intdouble是java中自带的内置类型,而类是用户自定义的新类型,比如上面描述的Dog类,就是一种自定义的新类型。有了这些类后,就可以用这些类定义实例。
  用类类型创建对象的过程,称为类的实例化,java中采用new关键字,配合类名来实例化对象。

public class Test {
    public static void main(String[] args) {
        Dog dog1 = new Dog();
        dog1.name = "小黑";
        dog1.age = 3;
        dog1.colour = "黑色";
        dog1.bark();
        dog1.wag();
        
        Dog dog2 = new Dog();
        dog2.name = "小白";
        dog2.age = 2;
        dog2.colour = "白色";
        dog2.bark();
        dog2.wag();
    }
}

输出结果:
  小黑汪汪叫~~~
  小黑摇尾巴~~~
  小白汪汪叫~~~
  小白摇尾巴~~~

上面代码中Dog类实例化出dog1,dog2多个对象,并分别为它们的名字,年龄,颜色赋值,用dog1. dog2.的形式访问对象中的属性和方法
注意事项:
1.new关键字用于创建一个对象的实例
2.使用 . 来访问对象中的属性和方法
3.同一个类可以创建多个实例

2.2类和对象的说明

1.类只是一个模型,用来对一个实体进行描述
2.类是一种自定义类型
3. 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量。


3.this引用

3.1为什么要有this引用
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,d2
        Date d1 = new Date();
        Date d2 = new Date();

        //对d1,d2设置日期
        d1.setDay(2024,9,3);
        d2.setDay(2024,9,4);

        //打印日期中的内容
        d1.printDate();
        d2.printDate();
    }
}
输出结果:
2024/9/3
2024/9/4

以上方法定义了一个日期(Date)类,然后用main方法创建了两个对象,并通过Date类中的成员方法对对象进行设置和打印。

  但如果形参名不小心与成员变量名相同:

public void setDay(int y,int m,int d){
        year = year;
        month = month;
        day = day;
    }

疑问:
1.那函数体中到底是谁给谁赋值?成员变量给成员变量?参数给参数?参数给成员变量?成员变量给参数?
2.两个对象都在调用setDayprintDate函数,那么这两个函数如何知道打印的是那个对象的数据。
因此就需要this的引用来访问。

3.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);
    }
 ________________________________________________________________________
     public static void main(String[] args) {
        Date d1 = new Date();
        d1.setDay(2024,9,3);
        d1.printDate();
    }

在main函数中实例化了d1对象,用d1.访问了setDay和printDate两个函数,函数中的this引用的是调用成员方法的对象,即this引用的是对象d1,因此加了this之后,就会清楚的知道调用了那个对象,打印的是那个对象的数据。

3.3this引用的特性

1.this只能在成员方法中使用
2.在成员方法中,this只能引用当前对象,不能引用其他对象
3.this的类型:对应类的类型,那个对象调用就是那个对象的引用类型


如有错误和不足请大家指正~

标签:对象,month,int,Date,public,d1
From: https://blog.csdn.net/2302_78564810/article/details/141862722

相关文章

  • python 面向对象语法进阶
    python语法面向对象进阶1.定义类的格式2.继承2.1单继承2.2多继承2.3方法重写2.3.1重写后-子类访问父类的成员-写法12.3.2重写后-子类访问父类的成员-写法2super3.多层继承4.封装4.1封装-私有化属性4.2封装-私有化方法5.多态5.1多态案例6.抽象类入门7.类属性与对......
  • Java中的设计模式:面向对象设计的实用技巧
    Java中的设计模式:面向对象设计的实用技巧大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!设计模式是软件工程中被广泛应用的一系列最佳实践,它们可以帮助解决常见的软件设计问题。在Java中,设计模式尤其重要,因为它们提供了一套标准的方法来创建灵活且可......
  • Unity面向对象补全计划 之 List<T>与class(非基础)
    C#&Unity面向对象补全计划泛型-CSDN博客关于List,其本质就是C#封装好的一个数组,是一个很好用的轮子,所以并不需要什么特别说明问题描述假设我们有一个表示学生的类 Student,每个学生有姓名和年龄两个属性。我们需要创建一个学生列表,并实现以下功能:添加学生到列表中打印......
  • 章10——面向对象编程(高级部分)——代码块
    代码块/初始化块与方法的区别:无方法名、返回、参数,仅方法体。不用通过对象或类显示调用,加载类/创建对象时隐式调用。代码块的好处:总结:在有多个构造器的类中,可以把每个构造器中都需要有的重复语句抽取出来单独作为代码块,大大提高了程序的复用性。publicclassCodeBlock01{......
  • Android开发 - BitmapFactory 类解码图像文件并转换为 Bitmap 对象与 BitmapFactory.O
    BitmapFactory是什么BitmapFactory用于解码图像文件,并将它们转换为Bitmap对象。Bitmap是用来表示图像的基本类,它是一个位图的抽象表示。BitmapFactory提供了一组静态方法,这些方法可以用来将各种图像文件格式(如PNG、JPEG、WEBP等)解码成Bitmap对象BitmapFactory的好......
  • 章10——面向对象编程(高级部分)——main方法
    main方法是Java虚拟机来调用的,不在同一个类,且调用该方法时并没有创建对象,所以其访问权限必须是publicstatic传入时机:在执行这个程序的时候,在最后面给它传进去的参数会形成一个字符串数组带进去。注意细节(与静态、非静态成员间的关系):publicclassTestMain{publicst......
  • 【C++】类和对象2:默认成员函数+操作符重载
    本篇是类和对象的第二站......
  • 极速掌握MinIO对象存储:从零部署到实战操作全攻略
    文章目录介绍安装部署安装服务器开放服务使用端口挂载磁盘安装MinIO创建目录下载安装文件设置执行权限目录结构如下所有节点都需要执行上述步骤编写启动脚本使用Console使用JavaApi调用获取永久链接可能报的错误错误1:ispartofrootdrive,willnotbeused错误2:Therequestsig......
  • C++学习笔记(四)类和对象
    类和对象C++对象模型和this指针成员变量和成员函数的存储C++中的成员变量和成员函数是分开存储的,只有非静态成员变量才属于类的对象上classPerson{intm_Age;//非静态成员变量staticintm_B;//静态成员变量voidfunc(){//不属于类的对象上}staticv......
  • 10 Python面向对象编程:类和对象以及和Java的对比
    本篇是Python系列教程第10篇,更多内容敬请访问我的Python合集这里只介绍类和对象,self、属性、方法、访问控制、类继承、方法重写在后面的文章里介绍在Python中,类和对象是面向对象编程的基础。1类的概念类是一种创建对象的蓝图或模板。它定义了一组属性(变量)和方法(函......