java面向对象
2020-04-05 本文已影响0人
一直很安静_25ae
类的定义以及对象的创建
- 类的创建
public class 类名 {
}
java中所有对象都是new出来的,所有对象的内存都是在堆空间的,所有保存对象的变量都是引用类型
java运行时环境有个垃圾回收器(garbage collect,简称GC),会自动回收不在使用的内存
java程序的内存划分
java虚拟机在执行java程序时,会将内存划分为若干个不同的数据区域,主要有:
- pc寄存器:存储java虚拟机正在执行的字节码指令的地址
- java虚拟机栈:存储栈帧
- 堆:存储GC所管理的各种对象
- 方法区:存储每一个类的结构信息(比如字段和方法信息,构造方法和普通方法的字节码等)
- 本地方法栈:用来支持native方法的调用(比如用c语言写的方法)
构造方法
构造方法也叫构造器,能够更方便的创建一个对象
- 方法名必须和类名一样
- 没有返回值类型
- 可以重载
//类名是dog
public class dog {
public int price;
//这个就是构造方法 没有返回值并且和类名一样
public dog(int price) {
}
//这个也是构造方法 没有返回值并且和类名一样
public dog() {
}
}
this(跟oc中的self差不多)
this是一个指向当前对象的引用,常见的用途是:
- 访问当前类中定义的成员变量
- 调用当前类中定义的方法(包括构造方法)
public class dog {
public int price;
public dog(int price) {
}
public dog() {
this(10);//调用构造方法是用this调用的
//下面的这种调用就是错误的
//dog(10);
}
}
this的本质是一个隐藏的位置最靠前的方法参数
package包
- java中的包就是其他编程语言中的命名空间,包的本质是文件夹,常见的作用是:
- 将不同的类进行组织管理,访问控制
- 解决命名冲突
- 命名建议
- 为保证包名的唯一性,一般包名都以公司的域名倒写开头(eg:com.baidu)
- 全部是小写(以避免与某些类名或者接口名冲突)
- 类的第一句代码必须使用package声明自己属于哪个包
QQ20200405-203032@2x.png
如何使用一个类
要想正常使用一个类,必须得知道这个类的具体位置(在哪个包),有3种常见的方式来使用一个类
- 使用类的全名(不推荐使用)
com.baidu.model.Dog dog = new com.baidu.model.Dog();
-
使用import导入指定的类名
image.png -
使用import导入整个包的所有类
image.png