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()赋值
- 使用带参构造方法直接创建带有属性值的对象
🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷🌷
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
🍻🍻到这我们的任务就结束啦!!!🌝
感谢大家的阅读 如果在内容方面有什么问题的话可以在评论区或私信告诉我吧
博主小要求🙏🙏 如果这段对大家有用的话 就给博主一个免费的点赞👍+评论✉️ +收藏💻吧🌹🌹🌹 感谢大家啦!!
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖