类和对象(一)

1、面向对象的认知


 1.1什么是面向对象

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

1.2面向对象与面向过程

举个例子: 穿了一天的脏衣服要经过以下步骤才能变干净。

上述每个步骤都参与的我们称为面向过程。

那什么是面向对象?

我们以现代洗衣服的过程来说明。

总共有四个对象:人、衣服、洗衣服、洗衣机,整个过程是四个对象之间交互完成的,人不需要关心洗衣机具体是怎么完成洗和甩干的。        

面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,我们不用去关 心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的

2、类定义和使用


2.1 认识类

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

比如:电饭煲,它是一个品牌,在Java中可以看成是一个类别。

属性:产品品牌,型号,产品重量,外观尺寸,颜色...

功能:加热、保温、定时....

2.2类的定义格式

在java中定义类时需要用到class关键字,具体语法如下

 class RiceCooker {
    //成员属性或者成员变量
    public String brand;//品牌
    public String type;//型号
    public double weight;//重量
    public double length;//长
    public double width;//宽
    public double height;//高
    public String color;//颜色
    //成员方法
    public void heating(){ //加热
        System.out.println("煮饭......");
    }
    public void heatpreservation(){ //保温
        System.out.println("保温......");
    }
    public void atregulartime(){ //定时
        System.out.println("定时.....");
    }
}

注意事项

  • 类名注意采用大驼峰定义。
  • 成员前写法同一为public。
  • 此处写的方法不带static关键字。

现在知道如何定义一个类的语法,以及知道了什么是类,那么如何去用?

3、类的实例化


定义了一个类,就相当于在计算机中定义了一种新的类型。

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

例如:

//类
class Cat{ 
    // 成员变量
    public String name;
    public String color;
    public int age;
    
    //成员方法
    public void bark(){
        System.out.println("喵喵喵.....");
    }
    public void wag(){
        System.out.println("竖尾巴......");
    }
}
Cat cat = new Cat();
Cat cat1= new Cat();
由  生成 对象过程 叫做实例化。或者这么理解, 对象是 被实例化 的 类。

那么对象当中有什么? 以及如何使用对象?

public class Main {
    public static void main //通过入口开始执行 (String[] args) {
        Cat cat=new Cat();
        cat.name="月饼";
        cat.color="黑白";
        cat.age=5;
        System.out.println(cat.name);
        System.out.println(cat.color);
        System.out.println(cat.age);
        cat.bark();
        cat.wag();
    }

运行结果:

月饼
黑白
5
喵喵喵.....
竖尾巴......

结论:通过对象的引用可以去访问对象的成员变量。同时也可以访问对象的成员方法。

注意:
  • 成员变量会有一个默认值:1.引用类型默认为null。2.基本数据类型默认为对应的0值。
  • 局部变量在使用时要进行初始化,否则无法编译。

实例化对象是否有限制?

答:无限制,可以通过关键字new 实例化多个对象。

也可以通过方法赋值。

按照上述顺序执行。

如果形参名和成员变量同名,输出值是否改变?

public void setDate(int year,int month,int date){ 
        //形参自己给自己赋值,并没有修改到对象当中的 year month date
        year=year;
        month=month;
        date=date;
    }

运行结果:

        0年0月0日
        0年0月0日
        0年0月0日

原因:此时在方法内 year month date 都是局部变量。此时局部变量优先使用

如何解决?

答:加this关键字。

 public void setDate(int year,int month,int date){
        this.year=year;
        this.month=month;
        this.date=date;
    }

运行结果: 2025年6月14日

4、this的使用


this代表什么?

答:代表当前对象的引用。

什么又是当前对象,如何判断当前对象?以及当多个对象都调用同一个setDate时,怎么区分是哪个对象调用方法中的方法体?

哪个对象的引用 调用了该方法,this代码哪个对象,则调用this的对象为当前对象

    public void setDate(Date this //作为隐藏的第一个参数传递值,可省略。 ,int year,int month,int date){
        this.year=year;
        this.month=month;
        this.date=date;
    }

this的三种用法:

  1. 通过this访问,当前对象的成员变量。
  2. 通过this访问,当前对象的非静态的成员方法。
  3. this在静态方法中会报错
  4. 通过this访问,当前对象的其他构造方法。

5、构造方法


语法:

方法名需要和当前类名一样。

class Date{
    public Date(){
        System.out.println("调用该方法........");
    }
}

怎么使用构造方法?

在实例化新对象时,至少有2个步骤:

  1. 为对象分配内存
  2. 调用合适的构造方法

运行结果:

实例化对象时,可以借用构造方法 对对象进行初始化。

特别说明:

这个情况为什么不报错?

没写任何构造方法时,Java会默认给你提供一个不带参数的构造方法,但是一旦有其他的Java不会再提供! ! !

结论:要么写全,要么不写。

这时候有聪明的小伙伴突然发问

路人甲:哎 ! 既然this可以传值那能不能这么写?

public Date(){
    this(2000,6,7);
}
public Date(int y,int m,int d){
    this();
    this.year=y;
    this.month=m;
    this.date=d;
    printDate();
    System.out.println("调用该方法........");
}

我:不行! 为啥啊? 因为成闭环了,跳不出去。

路人甲:不信.......

我:(啪)

        

路人甲(点赞)。

-----------------------------------------------------------------完-------------------------------------------------------------

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值