类和对象~

类和对象

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的类型:对应类的类型,那个对象调用就是那个对象的引用类型


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值