初识Java之类和对象

前言

在关于Java学习中我们一直在强调类和对象,那么到底什么是类,什么是对象?类和对象是Java语言的精髓之所在,也是Java的一大特色,我们在学习Java务必要了解这一点。


1.面向对象的初步认识

1.1什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向的对象的世界里,一切皆为对象。**面向对象是解决问题的一种思想,主要靠对象之间的交互来完成一件事。**面向对象的思想涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常好。

1.2面向对象和面向过程

🤔我们举两个例子来简单说明一下面向过程和面向对象

在这里插入图片描述

在面向过程的时候,需要你自己去完成吃饭的每一个步骤,离开宿舍,去食堂打好饭,再带回宿舍吃饭,但是面向对象的时候,在整个打饭的过程中你都没有参与,只需要在宿舍等待室友打好饭回来即可。是不是你的对象也就是你的室友已经帮你完成了所有的步骤,此对象非男女朋友对象。


在面向对象的方式来处理,就不需要关注打饭的过程,室友是跑着去食堂还是走着去食堂,他是去几号窗口打的饭,我们都不需要关心。

2.类的定义和使用

面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如洗衣机,但是计算机不认识洗衣机,需要我们告诉计算机这个洗衣机到底长什么样。
在这里插入图片描述

上图就是对一个简单洗衣机的简单描述,这个过程就是对洗衣机对象(这个实体)进行抽象的描述,但是我们说的再仔细,计算机也不认识,这个时候我们就需要用到Java这个编程语言来进行描述,要想拿到一个对象就得先有类👇🏾

2.1简单认识类

类是用来对一个实体(对象)进行描述的,例如洗衣机,我们描述它多大,怎么用,产自哪里,功率是多少,描述完成后,计算机就能识别到洗衣机。
那我们怎么定义一个类呢?👇🏻

2.2类的定义格式

在定义一个类时,就需要用到关键字class

class WashingMachine{
   
	members;//成员变量或者是属性
	method;//方法
}
//class是定义类的关键字,WashingMachine是类的名字,在{}中的部分就是类的主体

🦈 属性:主要是用来描述类的,成为类的成员变量或者成员属性
🐋方法:主要是用来说明类有哪些功能,成为类的方法


class WashingMachine{
   
	public String brand;//品牌
	public String type;//型号
	public double weight;//重量
	public double length;//长
	public double width;//宽
	public double height;//高
	public double color;//颜色
}
------------------------------------
//以上是成员变量
public void washClothes(){
    //洗衣服
	System.out.println("洗衣功能");
	}
public void dryClothes(){
    //脱水
	System.out.println("脱水功能");
	}
public void setTime(){
    //定时
	System.out.println("定时功能");
	}
-------------------------------------
//以上是成员方法
}

🕹注意事项:
1.类名采用大驼峰来定义🐫
2.成员前统一用public来修饰
3.此处写的方法不带static修饰

2.3练习

2.3.1定义一个狗类和一个猫类

class Dog{
   
    public String name;//名字
    public String color;//颜色


    //狗的属性
    public void bark(){
   
        System.out.println(name+"汪汪叫");
    }
    public void eat(){
   
        System.out.println(name+"在吃饭");
    }
}
class Cat{
   
    public String name;
    public String color;
    public  void bark(){
   
        System.out.println(name+"喵喵叫");

    }
    public void eat(){
   
        System.out.println(name+"在吃饭");
    }
	}
}

🧳注意事项:
1.一般一个文件当中只定义一个类
2.main方法所在的类一般要使用public修饰
3.public修饰的类必须和文件名相同
4.不要轻易修改public修饰的类名
5.一个.java文件中只能有一个public类

3.类的实例化

3.1什么是实例化

🧳 定义一个类,就相当于在计算机中定义了一个新的类型,例如Dog和Cat就用户自己定义的类,有了这些自定义的类型后,就可以使用这些类来定义实例(也就是对象)
💼用类类型创建对象的过程,称为类的实例化,在Java中采用new关键字,配合类名来实例化对象


我们利用代码来实现一下

public class Main {
   
    public static void main(String[] args) {
   
        Dog dog=new Dog();
        dog.name="旺财";
        dog.bark();
        dog.eat();
        Cat cat=new Cat();
        cat.name="布丁";
        cat.bark();
        cat.eat();

    }

我们在对对象进行实例化之后,就可以来访问对象中的成员以及方法,通过new这个关键字来创建属于这个对象的实例,通过.号这个符号来访问对象中的成员以及方法。结合以上两个代码块,我们一开始定义了狗和猫这两个对象,但是计算机不知道他们具体的情况,我们就需要来实例化这两个小动物,他们有名字吗,会说话吗,会写字吗?

⬇️

在这里插入图片描述
在这里插入图片描述
那是否同一个类可以创建多个实例呢,答案是yes

⬇️

我们定一个Person类,通过new创建多个实例,这样完全是OK的

class Person{
   
    public String name;
    public int age;
    public void eat(){
   
        System.out.println("吃饭!");
    }
    public void sleep(){
   
        System.out.println("睡觉!");
    }
}

public class Test {
   
    public static void main(String[] args) {
   
        //一个类可以实例化多个对象
        Person person1=new Person();
        person1.name="本内特";
        person1.age=37;
        person1.sleep();
        person1.eat() ;
        System.out.println(person1.name+" "+person1.age);

        Person person2=new Person();
        person2.name="里弗斯";
        person2.age=27;
        person2.eat() ;
        System.out.println(person2.name+" "+person2.age);

    }

我们总结3点💬

  1. new关键字用于创建一个对象的实例
  2. 使用.来访问对象的成员和方法
  3. 同一个类可以创建多个实例

3.2类和对象的说明

🤔类和对象到底哪里不同
在这里插入图片描述
我们将类比作是一张房屋设计图,我可以设计出不同的房型,不同的房型就是不同的对象,至于这些房子里的卧室,厨房,洗手间是什么样的,就需要我们自己来设计,也就是类的实例化。

  1. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
  2. 类是一种自定义的类型,可以用来定义变量.
  3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量
  4. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

👤我们还是拿Person类来说明

我们实例化了两个对象,person1和person2。
他们是在main方法中创建的,方法内部创建的变量叫做局部变量,局部变量是存在栈上的,会在栈上开辟属于他们的空间,我们把person1和person2称为引用变量或者引用。引用变量:这个引用存储的是对象所在空间的地址。
new Person(),通过关键字new创建的对象都是在堆上保存的,所以person1和person2就存储了属于他们对象的地址,引用一定是指向对象的。
在这里插入图片描述

在这里插入图片描述

3.3补充

  1. 当一个引用赋值为null时,代表这个引用不指向任何对象,也就是空指针异常。
public static void main(String[] args) {
   
        Person person1=null;//这代表 person1不指向任何对象,会造成空指针异常
        person1.name="里弗斯";
        person1.age=28;
        person1.show();

    }

在这里插入图片描述
2.引用不能指向引用,这个说法是错误的
在这里插入图片描述
person1=person2;
这个代表person1这个引用指向了person2这个引用指向的对象
在这里插入图片描述
3.一个引用能否同时指向多个对象?不能
在这里插入图片描述
最后person1只指向了一个对象

4.this引用

4.1为什么要有this引用

public class DateUtil {
   
    public int year;
    public int month;
    public int day;

 public void setDate(int year,int month,int day){
   
      year=year;
      month=month;
   	  day=day;

    }
    
public void show(){
   

        System.out.println("年:"+year+" 月:"+month+" 日:"+day);
        
    }
public static void main(String[] args) {
   
//创造3个日期类型的对象
//对3个对象进行设置
        DateUtil dateUtil1=new DateUtil();
        dateUtil1.
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值