【Java SE】类和对象

本文介绍了Java中的面向对象编程概念,包括类的定义、类和对象的关系、实例化过程、构造方法、this引用的使用以及成员变量和局部变量的区别。通过实例演示了如何定义类、创建对象和理解构造方法的重载。
摘要由CSDN通过智能技术生成

🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈

在这里插入图片描述
今天开始,我们就进入很重要的部分啦!本期内容讲解类和对象的知识点,这部分内容比较抽象,我们需要多多理解,但是不要有畏难的情绪哦!我们要相信自己,一定可以哒

1. 初始面向对象

1.1 面向对象

Java是一门纯面向对象的语言(简称OOP),一切皆为对象,主要依靠对象之间的交互完成一件事情

1.2 面向过程

面向过程主要的特点是注重实现这个功能的步骤,每一步具体实现什么功能,且强调因果关系

1.3 面向对象和面向过程

以买一台电脑为例子
在这里插入图片描述面向对象:【关注对象实体之间互相协作完成】
面向过程:【关注的是过程】
【注意】面向过程和面向对象并不是一种语言,而是一种思想,没有好坏之分,都有其特定的应用场景

2. 类的定义和使用

Q:为什么要有类?如何定义类?
这一系列的问题,让我们具体来看看吧!

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

以下为定义类的语法

class 类名 {
    属性
    行为/功能
}

下面我们具体定义一个类,比如人类,有什么属性呢?一个人有名字,性别,年龄等等,有什么行为呢,在日常生活中,人需要吃饭喝水睡觉等等,这样我们构建类,如下:

class Person {
	public String name;
	public int age;
	public String sex;

    public void eat() {
    System.out.println("吃饭");
    }
    public void drink() {
    System.out.println("喝水");
    }
     public void sleep() {
    System.out.println("睡觉");
    }
}

一个类,其实可以理解为一个类型,只不过是自定义的类型
【注意事项】

  1. 类名采用大驼峰定义
  2. 目前就在成员之前定义public与方法之前不带static
  3. 一般一个文件当中只定义一个类
  4. public修饰的类必须要和文件名相同

3. 实例化类

3.1 如何实例化

那如何拿到对象呢?
要拿到对象,就必须先有类,用类类型创建对象,这个过程就是类的实例化,在Java中采用new关键字,实例化对象
举个例子看看吧!
比如上面一个例子定义了类->人,我们如何进行实例化对象呢?

class Person {
    public String name;
    public int age;
    public String sex;

    public void eat() {
        System.out.print("吃饭 ");
    }
    public void drink() {
        System.out.print("喝水 ");
    }
    public void sleep() {
        System.out.print("睡觉 ");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.name = "张三";
        person1.age = 18;
        person1.sex = "男";
        System.out.print(person1.name+" "+ person1.age+" "+person1.sex+" ");
        person1.drink();
        person1.eat();
        person1.sleep();
        Person person2 = new Person();
        person2.name = "李四";
        person2.age = 20;
        person2.sex = "女";
        System.out.print(person2.name+" "+ person2.age+" "+person2.sex+" ");
        person2.drink();
        person2.eat();
        person2.sleep();
    }

}

打印结果如下:
在这里插入图片描述

从以上代码中,我们看到利用new关键字实例化对象,通过.调用属性、行为等,同时可以实例化多个对象
【注意事项】
1.类用来对一个实体进行描述,限定类的成员与行为
2.类相当于类型,是自定义类型,可用来定义变量
3.一个类可以实例化多个对象,实例化的对象占用实际物理空间,存储类成员变量

3.2 关于引用

【引用】指向对象 这个【对象】存储了地址
在这里插入图片描述

【注意事项】
1.引用为null赋值为null时候,含义是这个对象不指向任何对象
2.引用不能指向引用,只能是一个引用指向另一个引用指向的对象

4. this引用

4.1 this引用的含义

this引用是什么?this引用又有什么作用呢?
通过看以下的这段代码,可能会解决我们的问题

class Person {
    String name;
    String sex;
    int age;

    public void setData(String name,String sex,int age) {
        name = name;
        sex = sex;
        age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.setData("zs","女",12);
        System.out.println(person1.name+person1.sex+person1.age);
    }

}

在这里插入图片描述
此时,就有了this引用,它的作用就是this引用指向当前对象,this.name指的是成员变量的属性name,其中将传进去的形参name的值赋给这个成员变量name

class Person {
    String name;
    String sex;
    int age;

    public void setData(String name,String sex,int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.setData("zs","女",12);
        System.out.println(person1.name+person1.sex+person1.age);
    }

}

在这里插入图片描述

4.2 this引用的三种应用

【1】this.data 访问当前对象的成员变量,如上述例子,则是访问当前对象的成员变量
【2】this.func() 访问当前对象的成员方法
【3】this() 调用当前对象的其他构造方法,在下面会讲到构造方法

4.3 this的特性

【1】this只能在"成员方法"中使用,不能调用静态成员方法和属性
【2】在"成员方法"中,this只能引用当前对象,不能再引用其他对象
【3】this的类型,必须对应类类型引用,简单的说,就是哪个对象调用就是哪个对象的引用类型
【4】每个成员方法第一个参数默认是this

5. 构造方法

5.1 基本概念

【构造方法】构造方法是一个特殊的成员方法,名字必须与类名相同,创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次
注意事项:千万不要加void,加void就不是构造方法了,没有返回值类型

1.如果你没有写构造方法,此时Java会帮我们提供一个默认的不带参数的构造方法
2.如果写了则会调用自己写的,并且只会调用一次!!!
3.只要自己写了构造方法,Java都不会给你提供默认的构造方法!!!

5.2 具体用法

class Person {
    String name;
    String sex;
    int age;

    public Person() {
        System.out.println("不带参数的构造方法");
    }
    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        System.out.println("调用带三个参数的构造方法");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("zs","女",12);
        System.out.println(person1.name+person1.sex+person1.age);
    }

}

在这里插入图片描述
在这里插入图片描述

5.3 重载

【重载】方法名必须相同,参数列表不同,返回值无影响
此时上面的两个Person方法构成重载

6. 成员变量和局部变量

【成员变量】定义在方法外部,类的内部(java中无全局变量的概念)
【局部变量】定义在方法的内部
在这里插入图片描述
【成员变量】没有赋值也可以打印默认值,如int类型默认值为0,引用类型默认为null
【局部变量】必须初始化

7. 对象打印

public class Student {
    private int sno;//学号
    public String sex;//性别
    public int score;//分数
    public String name;//姓名

    public Student(int sno, String sex, int score, String name) {
        this.sno = sno;
        this.sex = sex;
        this.score = score;
        this.name = name;
    }
}

class Test {
    public static void main(String[] args) {
        Student s1 = new Student(123,"女",99,"小小");
        System.out.println(s1);
    }
}

打印的结果为:
在这里插入图片描述
如果我们想打印这个对象的属性,比如她的学号、性别、分数和姓名,如何做呢~
在Student类中重写toString()方法

   @Override
    public String toString() {
        return "Student{" +
                "sno=" + sno +
                ", sex='" + sex + '\'' +
                ", score=" + score +
                ", name='" + name + '\'' +
                '}';
    }
    //编译器自己提供的toString方法,也可以自己重写~

在这里插入图片描述

本期内容就到这里结束啦,对Java的类和对象有一定的了解了叭~下期我们继续讲解类与对象的相关知识!

  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值