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,在之后给姓名和年龄分别赋值的时候 系统报错了,而给性别赋值的时候 系统却没报错 ,这是为什么呢???
 ⬇️⬇️⬇️⬇️
 
- 首先我创了Student类和StudentDemo(测试类)

- ⭐️在这就体现了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;
 
- get方法的使用: 
    
⬇️ ⬇️ ⬇️ ⬇️ 
 
 ⬆️⬆️⬆️⬆️
 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
 ⭐️⭐️不过大家发现了没有 我们在使用set方法的时候存在一个问题就是 把我们的局部变量赋给成员变量的那部分
 如:
public void setName(String Name){
  name=Name;
  }
  
⭐️我们局部变量名和成员变量名不一样??⬆️⬆️
-  如我们局部变量名和成员变量名一样了怎么办呢😱😱😱 
-  如: 
  
  
-  ⬆️⬆️我们局部变量名和成员变量名一样会导致 编程代码时给name一个空值 而这不是我们想要的结果! 
-  这种情况下我们怎么解决呢❓ ❓ 
-  不要担心 不要怕 我们把这问题就交给我们的新知识点this关键字来解决叭 ❗️ ❗️ ❗️ 
-  this关键字的使用: - 我在name前面加了个关键字this之后 编程代码时就成功把“小明”赋给了我们的name
- 因为前面的name被this修饰了 而后面的name没用this 所以我们就把成员变量和局部变量用this去区分开了
  
 
-  this关键字的特点: - 1️⃣ this修饰的变量用于指代成员变量 
    - 方法的形参和成员变量同名时,不带this修饰符的变量指的是形参,而不是成员变量
- 方法的形参与成员变量不是同名时,不带this修饰的变量指的是成员变量
 
- 那么说明在成员变量和局部变量同名时我们就用this关键字来区分开咯❗️ ❗️
- ⭐️注:this代表所在类的对象引用 
    - 方法被哪个对象调用,this就代表哪个对象
 
 
- 1️⃣ 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()赋值
- 使用带参构造方法直接创建带有属性值的对象
 
🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷
 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
 🍻🍻到这我们的任务就结束啦!!!🌝
 感谢大家的阅读 如果在内容方面有什么问题的话可以在评论区或私信告诉我吧
 博主小要求🙏🙏 如果这段对大家有用的话 就给博主一个免费的点赞👍+评论✉️ +收藏💻吧🌹🌹🌹 感谢大家啦!!
 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖










