👀作者简介:大家好,我是大杉。
🚩🚩 个人主页:爱编程的大杉
支持我:点赞+关注~不迷路🧡🧡🧡
✔系列专栏:javase基础⚡⚡⚡
(❁´◡`❁)励志格言:生命对我来说,太短暂了,不能用来怀恨记仇。在这世上,肯定人人都有一身的过错。(from 《简·爱》)
🤞🤞
文章目录
一.类和对象的关系
类是抽象化特征集合,对象则是根据类提供的特征实例化的体现。
就好比类是一个建筑图纸。而对象是根据图纸建造出来的各种各样的建筑(一个类可以实例化多个对象)
二.类的封装
1.封装的含义
1.🔥在我们写代码的时候经常会涉及两种角色: 类的实现者和类的调用者.
2.👀封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的, 只要知道如何使用类就行了
3.⛳📣简言之,就是通过封装将自定义类中的某些成员变量和方法保护起来,使其不能被类的调用者直接访问。提高了安全性以及减小了代码的维护成本
2.private实现封装
1.private修饰成员变量
private String name;//封装成员变量
private static double height;
private static double weight;
2.private修饰方法
1.同上面类似在方法的返回类型前用private修饰
2.注意的点:private 修饰的方法只能在当前类中被当前类中方法调用。但是一个类中的方法不能调用另一个类中的private 方法。
3.private修饰方法不能在main函数中调用,只能在当前类中被当前类中方法调用
在main方法中调用就会报错
3.getter,setter方法创建公共接口
被private修饰的方法虽然不能被main调用,但是被private修饰的成员变量可以通过getter和setter方法间接调用
public String name;
public String getName() {//获得name
return name;
}
public void setName(String name) {
//设立name
this.name = name;
}
三.static修饰的成员变量和方法
1.static修饰成员变量
注意点
🏀.static修饰的成员变量或者方法,是直接依赖于类的不依赖于对象;所以main函数中可以通过类名直接调用成员
2.static修饰方法
🏀.被static修饰的静态的方法,不能调用不被static修饰的方法,但反之却可以
🏀.static修饰的成员只有一份。
如何理解只有一份呢?请看下面!🤞🤞
四.自定义类中各成员的存放位置分析
🚩🚩从上面的图片可以看出,只要new出一个对象。name,age(不被static修饰的成员)就会在新的对象中拷贝一份
但是被static修饰的成员的变量会被放在方法区,不会随着对象的创建,拷贝出新的变量,因此只有一份
注意:1方法区不一定是放方法的!
2.不存在方法在内存怎么分配这一说
五.this关键字
1为什么会有this呢?
先看一个例子
当出现这种情况是,本来我们是想对外面的Myname赋值,但是变量名相同就会出现明显的错误。这时候this就派上用场了。
public void setMyName(String MyName){
this.MyName=MyName;
}
加上this后就表示外面 的MyName变量了
因为this表示当前变量的引用
2.除此之外this在构造方法中还有其他用处
六.构造方法的注意事项
1.构造方法的目的
为成员变量赋值
2.注意事项
1.注意事项
在没有手动添加构造方法的时候,系统会默认一个无参构造方法。在手动添加了构造方法后就不会自动默认存在一个自带的无参构造方法
3.常考面试题
问:this关键字代表对象,这句话对还是不对?
解答这个问题首先要明确,产生对象分几步?
1.为对象分配内存。
2.调用合适的构造方法。
答:明显不一样,因为this关键字实在调用构造方法的过程中使用的,而对象在调用构造方法之后才会产生。(上文提到了,this代表当前对象的引用)
七.代码块
1.实例代码块(定义在类中)
2.静态代码块
注意:静态代码块中不能用到非静态的变量。更不能用到this因为this代表当前对象的引用,是基于对象的。而静态代码块是被static修饰的,是基于类的