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()其实就是一种方法,不过他是构造方法
作用:创建对象
构造方法里面没有参数,就是无参构造方法
主要是完成对象数据的初始化,要在类定义里面写,而不是在测试类里面写
构造方法注意事项
当一个类里面什么构造方法都没有时,系统会自动给出一个默认的构造方法
但是如果你写了一个带参构造方法,你没有写无参构造方法时,这个类里面就只有这个带参的构造方法了,而没有无参的,你要自己补上去
标准类制作