面向对象Part1对象的创建和Static!
面向对象的特征:
1)封装
2)继承
3)多台
4)抽象
创建的是什么类型的对象 变量的声明就是什么类型.
class Servant{
void xxx (){}
}
Servant s1 = new Servant();
s1.xxx()
创建的是Servant类型的对象, 变量s1就应当是Servant类型.
创建一个类>>>创建一个对象>>>调用对象的方法
内存表示:
new出来的对象放在堆里,每个堆里的对象有一个地址值,把地址值赋给栈空间里的变量. 栈空间的变量在调用的改变下再赋值给堆空间.
匿名对象使用: new Servant().name="A" 一次性对象.
学生缴费模型:数组的引用在堆栈里存放的元素是地址值而不是数值.
Constrctor(构造器): 例如 : student s1 = new student()
系统在编译文件会默认生成一个student(){}无参数的方法.
构造器必须和new一起使用. 构造器完成对象的初始化作.
在构造器中不需要使用return语句. 其实构造器是有返回值的,它返回的是当前创造对象的的引用.
类的前面有public 构造器也用public修饰.
自定义的构造器:
构造器可以重载: 只有参数列表不同.构造器的名称相同.
修饰符Static:
4)必须在所在类中调用.
static修饰的变量不属于对象属于类.
静态的static用类名去访问. Person.XXX(static修饰的变量)
内存分析:
将主方法中用到的类的字节码加载进方法区:
由于Static修饰的变量随着类的加载而加载,所以Static变量加载到内存中的方法区中.方法区才是大家共享的一块区域.
类成员:使用static修饰的成员.
实例成员:没有使用static修饰的成员.
局部变量属于它所定义的代码区域里面.局部变量不能用static修饰.static修饰决定于它属于类.
类成员只能访问类成员.实例成员只能访问实例成员.
实例成员不可通过类名调用.
在Static方法中只能调用static成员.
非Static方法可以访问Static成员.也可以访问实例成员.
没有static不能用类名调用. 得先创建一个对象再调用方法.
为什么Static方法中只能调用Static成员?
就好比你饿了,想吃馒头,然而没有馒头.因为没有new出来一个馒头.
Static是和类相关联. 非Static的实例变量是和对象关联.
先有Static后有实例变量. 如果想要在Static方法下面调用非Static变量.需要先new出来或者引用new好的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!