Java基础(六)——面向对象基础(一)类与对象、对象的创建,赋值,取值,调用方法、封装

Java基础(六)——面向对象基础

一、对象

1、什么是对象

在这里插入图片描述
现实中的对象:
在这里插入图片描述

2、什么是类

类,这个类是指某一类事物,这一类事物肯定有某种或某些共同的特征,让你一眼看到就知道它是某一类事物。

比如看到一个四脚生物,你一眼看到就知道这是狗,而不是猫,不是蜘蛛,更不是人;所以称这一类生物是狗。

3、类的定义

在这里插入图片描述

4、类与对象的关系

在这里插入图片描述

5、对象的创建和赋值、取值、调用方法

这里以学生举例子。创建学生这个类:

public class Student {
    
    
    String name;
    int number;
    int englishResults;     // 英语成绩
    int chineseResults;     // 语文成绩
    int mathResults;        // 数学成绩

	public int average(){
    
    
        return (englishResults+mathResults+chineseResults)/3;
    }

这样学生这个类就创建好了,姓名、学号、三科成绩,以及求平均成绩这个方法。

怎么创建一个个学生这些对象呢?

Student stu1 = new Student();		// 创建了学生1.也叫实例化对象

接着,可以为实例化后的对象赋值:

stu1.name = "张三";
stu1.number = 1;
stu1.englishResults = 80;

如果要调用方法,或者取得英语成绩,则通过 对象 . 方法()/ 属性 来调用:

System.out.println(stu1.englishResults);
System.out.println(stu1.average());

6、封装

但是这里会有一个问题,学生的成绩可以随意设置,比如设置一个负数,或者设置很大的整数,这些当然都是不对的,那么解决的方法就有:赋值前做判断,但是每次创建对象赋值都要判断,明显不可取;也可以在类里面创建方法,方法里面做判断,通过方法来设置成绩,但是用户依然可以直接调用属性的方式来赋值,也不可取,所以就有了封装。

a、私有化属性以及get、set方法

为了不让外部随意调用里面的属性,可以对其属性进行私有化,通过 private 关键字:

private int englishResults;     // 私有化英语成绩
private int chineseResults;     // 私有化语文成绩
private int mathResults;        // 私有化数学成绩

这样就能私有化属性,外部调用则会报错。

私有化属性后,外部不能随便调用,但是怎么设置该属性以及获取属性呢?
当私有化以后,虽然外部不能调用,但是内部可以调用,java就提供了get、set方法,顾名思义,get是获取,set是设置。

而且设置成绩有要求,不能是负数,所以在设置 set 方法里面可以进行一些列的判断:

public void setEnglishResults(int a){
    
       // 设置英语成绩,需要接收值,无需返回值
        if (a<0){
    
    
            System.out.println("英语分数有误,罚你0分");
            englishResults = 0;
        }else {
    
    
            englishResults = a;
        }
    }

使用 set 方法需要接收值,但是不用返回值,所以方法时 void 类型的。

接着就是取出数据的 get 方法:

public int getEnglishResults(){
    
    	// 有返回值,所以方法要注意类型
        return englishResults;
    }

get 方法有返回值,所以这里是 int 类型的方法。

当设置好以后,就可以通过外部调用方法,来为私有化的属性赋值:

stu1.setEnglishResults(60);		// 赋值

System.out.println(stu1.getEnglishResults());		// 取值

b、封装总结

属性的封装:使数据更合理化:

  1. 属性私有化(private)
  2. 提供 get()/set() 方法进行取值和赋值

set():给属性进行赋值——有参数,没有返回值
get():获取对象的属性值——没有参数,有返回值

猜你喜欢

转载自blog.csdn.net/qq_41824825/article/details/121107525