java(抓哇)写个标准类需要哪些知识(学的话学 持续更新中 一起冲)

举报
迈热 发表于 2022/04/28 00:24:59 2022/04/28
【摘要】 java(抓哇)写个标准类需要哪些知识(学的话学 持续更新中 一起冲)

java(抓哇)学习类有关知识

        🌷 🌜 🌜 🌜 迈热博客间 🌛 🌛 🌛 🌷

📜个人简介

🎅 作者简介:大家好,我是迈热✌️
🌝 支持一下:点赞👍+收藏🌟+留言📪
📣 系列专栏:java基础🍁
✉️格言:先把键盘敲烂再说💻往死里敲!🌞

在这里插入图片描述

  • 前言目录

    • 成员变量和局部变量
    • 类的封装
    • 构造方法
    • 构造方法的注意事项
    • 标准类的制作
  • 学习前的小唠叨🏁

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌈🌈哈喽 兄弟萌! 我们都在想成为大佬的路上加油着👍
既然我们已经踏入了学习这一长路 那么就把它做的让自己满意为止💜 加油兄弟萌!!!!😝

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

  • 知识的介绍:

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌈🌈这一期我们介绍一下java有关的基础知识,主要介绍🍭类的封装🍭构造方法🍭构造方法的注意事项🍭标准类的制作🍭
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

🔎🔎那就开学了哦!!!

1️⃣ 成员变量和局部变量:

  • 成员变量定义:
    • 是类内方法外的变量

既然成员变量类内 方法外的变量的话 那么我们的类内指的是绿框内的所有内容了❗️ 而方法外指的是黄框内的内容就是我们的方法体的内容 那么很显然红框内的就是我们的成员变量咯❗️

  • 局部变量的定义:
    • 局部变量是方法中的变量

那么下图中我们的方法体有两个分别是call()方法sendMessage()方法 我们在这看call()方法内 去找我们的局部变量 很显然在call()方法中有个int age=30 那么这里的age 就是我们的局部变量咯哦❗️❗️

  • 成员变量和局部变量内存位置:
    • 成员变量是在堆内存
    • 局部变量在栈内存
    • 两者区别:⬇️
区别 成员变量 局部变量
类中的位置不同 类内方法外 方法内或方法声明上
内存中位置不同 堆内存 栈内存
生命周期不同 随着对象的存在而存在,随着对象的消失而消失 随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同 有默认的初始值 没有默认的初始值,必须先定义,赋值后才能使用

在这里插入图片描述

public class Student{
    /*类是对现实生活中具有共同属性和行为的事物的抽象
    类是对象的数据类型*/
        /*属性:成员变量
          行为:成员方法
        */
    //成员变量
    public String name;
    public int age;
    //成员方法
    public void call(){
        int age=30;
        System.out.println("打电话");
    }
    public void sendMessage(){
        System.out.println("发短信");
    }

}

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌈🌈成员变量和局部变量的介绍结束啦🍭建议大家多敲几遍 把两者区别搞懂🍭下面开始介绍类的封装前先介绍private修饰符this关键字🍭
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • private修饰符
    • 首先我创了Student类StudentDemo(测试类)
      Student中分别定义了姓名,年龄,性别三种变量
      (姓名和年龄是被private修饰了),(性别别public修饰了).
      之后在测试类中创建了Student对象 s,在之后给姓名和年龄分别赋值的时候 系统报错了,而给性别赋值的时候 系统却没报错 ,这是为什么呢???
      ⬇️⬇️⬇️⬇️

在这里插入图片描述

  • ⭐️在这就体现了private修饰符的作用:
    • private是修饰符(是私有的意思)
    • 可以修饰成员(成员变量和成员方法)
    • 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

⭐️⭐️⭐️那么被private修饰的成员变量需要在其他类中使用怎么办呢??

  • 不要担心 不要怕 使用变量用get/set方法

    • get方法的使用:
      • 定义:public 数据类型 get变量名()
      • 如:public String getName(){ }
    • set方法的使用:
      • 定义:public void set变量名(参数){ }
      • 如:public void setName(String name){ }
    • 这次给姓名和年龄赋值时 我们用对象名 . setName()或setAge()
    • s.setName(“小明”)或s.setAge(13);
    • 而输出时用变量名 . getName或getAge
    • 如:s.getName或s.getAge;

⬇️ ⬇️ ⬇️ ⬇️ 在这里插入图片描述
在这里插入图片描述
⬆️⬆️⬆️⬆️
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
⭐️⭐️不过大家发现了没有 我们在使用set方法的时候存在一个问题就是 把我们的局部变量赋给成员变量的那部分
如:

public void setName(String Name){
  name=Name;
  }
  

⭐️我们局部变量名和成员变量名不一样??⬆️⬆️

  • 如我们局部变量名和成员变量名一样了怎么办呢😱😱😱

  • 如:
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/e203e922f0944ee388b3393a4ea164a3.png
    在这里插入图片描述

  • ⬆️⬆️我们局部变量名和成员变量名一样会导致 编程代码时给name一个空值 而这不是我们想要的结果!

  • 这种情况下我们怎么解决呢❓ ❓

  • 不要担心 不要怕 我们把这问题就交给我们的新知识点this关键字来解决叭 ❗️ ❗️ ❗️

  • this关键字的使用:

    • 我在name前面加了个关键字this之后 编程代码时就成功把“小明”赋给了我们的name
    • 因为前面的name被this修饰了 而后面的name没用this 所以我们就把成员变量局部变量this去区分开了
      在这里插入图片描述
  • this关键字的特点:

    • 1️⃣ this修饰的变量用于指代成员变量
      • 方法的形参和成员变量同名时,不带this修饰符的变量指的是形参,而不是成员变量
      • 方法的形参与成员变量不是同名时,不带this修饰的变量指的是成员变量
    • 那么说明在成员变量和局部变量同名时我们就用this关键字来区分开咯❗️ ❗️
    • ⭐️注:this代表所在类的对象引用
      • 方法被哪个对象调用,this就代表哪个对象

2️⃣封装

  • 封装的定义:

    • 封装是面向对象的三大特征之一(封装,继承,多态) ,是面向对象编译语言对客观世界的模拟,客观世界里成员变量都是隐藏能够在对象内部的,外界是无法直接操作的。
  • 封装的原则:

    • 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应**getXxx()**和 **setXxx()**方法
  • 封装的好处:

    • 通过方法来控制成员变量的操作,提高了代码的安全性,把代码用方法进行封装,提高了代码的复用性。

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌈🌈封装有关知识点的介绍结束啦🍭要求大家把private修饰符this关键字的特点和用法搞清楚咯!🍭下面开始介绍类的构造方法🍭
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

3️⃣构造方法:

  • 构造方法的概述:
    • 构造方法是一种特殊的方法
    • 作用是:创建对象
    • 格式如下:
public class 类名{
   修饰符 类名(参数){
   }
}
  • ⭐️注:这里的修饰符我们一般用public
  • 构造方法分两类
    • 一:无参构造方法
public class 类名{
   修饰符 类名(){
   }
}
  • 二:有参构造方法
public class 类名{
   修饰符 类名(参数){
   }
}
  • 构造方法的功能:
    • 主要是完成对象数据的初始化。
  • 构造方法的代码实现:
    在这里插入图片描述
  • Student类:
public class Student {

    private String name;
    private int age;

    public Student() {

    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    public void show(){
    System.out.println("学习java");
    }

}

  • StudentDemo(测试类)
public class StudentDemo {
    public static void main(String[] args) {
        Student s=new Student();//无参构造的使用
        s.setName("小明");
        s.setAge(18);
        System.out.println(s.getName()+","+s.getAge());
        s.show();
        System.out.println("---------");

        s=new Student("小红",14);//有参构造的使用
        System.out.println(s.getName()+","+s.getAge());
        s.show();
    }
}

  • ⭐️ ⭐️代码解释:

    • 首先我定义了Student类 在内部定义了姓名和年龄两变量(用private修饰符),在把它的无参构造和有参构造写了出来,再把成员变量用get/set方法写出来。
    • 然后就是定义测试类,在内部创建了Student对象 s,再把它分别用无参和有参方法来调用了一遍
  • ⭐️ ⭐️代码编译结果:
    在这里插入图片描述

4️⃣构造方法的注意事项:

  • 构造方法的创建:

    • 如果没有定义构造方法,系统将给出一个默认的无参构造方法
    • 如果定义了构造方法,系统将不会再提供默认的构造方法 !
  • 构造方法的重载:

    • 如果自定义了带参构造方法,我们还需要无参构造方法就得手动去写一个咯哦!

➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🌈🌈构造方法和注意事项的介绍结束啦🍭要求大家把*无参和有参的特点和用法搞清楚咯!🍭下面开始介绍标准类的制作🍭
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

5️⃣标准类的制作(总结):

  • 一:成员变量:
    • 使用private修饰
  • 二:构造方法:
    • 提供一个无参构造方法
    • 提供一个带多参数的构造方法
  • 三:成员方法:
    • 提供每一个成员变量的setXxx()和getXxx()方法
    • 提供一个显示对象信息的show()方法
  • 四:创建对象并未其他成员变量赋值的两种方式(无参和有参哦!)
    • 无参构造方法创建对象后使用setXxx()赋值
    • 使用带参构造方法直接创建带有属性值的对象

🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🍻🍻到这我们的任务就结束啦!!!🌝
感谢大家的阅读 如果在内容方面有什么问题的话可以在评论区或私信告诉我吧
博主小要求🙏🙏 如果这段对大家有用的话 就给博主一个免费的点赞👍+评论✉️ +收藏💻吧🌹🌹🌹 感谢大家啦!!
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。