Java的类与对象

Java的类与对象

类的定义

public class 类名{
	//成员变量
	//成员方法
}

创建对象
eg:phone p=new phone()
格式:类名 对象名=new 类名()

使用对象:
1.使用成员变量
格式:对象名.变量名
eg:p.x

2.使用成员方法

格式:对象名.方法名()
eg:p.call()

如果直接输出p的话,会输出p的地址来

在java中,一般这么使用

先创建一个package
然后在package里面创建类
在里面最上面要写package 包名
你先给出一个类的定义
然后再创建一个测试类,测试类里面有main方法,来测试这个类
因为类和测试类都是在同一个package里面,所以可以直接使用类的数据成员和成员函数

对象内存图

1.单个对象
main方法首先会被放在栈内存里面
而new出来的内容会放在堆内存里面
注意,在方法调用结束后,栈内存的内存会被释放
但是堆内存还在
在这里插入图片描述
2.多个对象
在这里插入图片描述
与单个对象类似

3.多个对象指向相同
即我们先定义一个s1,然后让s2指向s1
因为s2是指向s1的,所以s2和s1的地址是相同的
在这里插入图片描述
堆内存的数据有默认的初始化值
而栈内存没有

成员变量和局部变量

成员变量:在类中,但是在方法外面
局部变量:方法中的变量,在方法内,或者在方法声明上:即方法形参
在这里插入图片描述

封装

1.private关键字
和c++的一样
如果要被其他类使用,则和c++一样,用一个被public修饰的函数来获取数据成员来进行更改
和c++不同的是,在使用被private修饰的变量时候,直接在定义变量前面加一个private即可,而不是像c++一样加个private:
使用public成员函数也是一样,在定义函数前面加个public

2.this关键字
和c++的this指针一样,因为有同名变量,编译器不知道是什么,所以要用this指针

因为比如说我们在类里面定义了一个name的成员变量,但是在方法的形参也定义了一个name的局部变量,那么我们在方法里面只能看到局部变量,看不到成员变量,所以我们给他赋值会赋值不成功,所以要用this

所以这么写:this.name=name;

this修饰的变量用于指代成员变量
方法修饰的形参如果与成员变量同名,那么不带this修饰的变量指的是形参,而不是成员变量

this代表所在类的对象引用
方法被哪个对象调用,this就代表哪个对象

this的内存原理
在这里插入图片描述
在这里插入图片描述
封装
面向对象三大特征:封装,继承,多态
在这里插入图片描述
构造方法
构造方法是是一种特殊的方法,实际上就是和c++的构造函数差不多
eg:student s1=new student();
这个student()其实就是一种方法,不过他是构造方法
作用:创建对象
在这里插入图片描述
构造方法里面没有参数,就是无参构造方法
主要是完成对象数据的初始化,要在类定义里面写,而不是在测试类里面写

构造方法注意事项
当一个类里面什么构造方法都没有时,系统会自动给出一个默认的构造方法

但是如果你写了一个带参构造方法,你没有写无参构造方法时,这个类里面就只有这个带参的构造方法了,而没有无参的,你要自己补上去

标准类制作
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值