类的定义及使用
一,类的定义
class Book {//定义一个类 int price;//定义一个属性 int num; public static int getMonney(int price, int num) {//定义一个方法 return price*num; } } public class test2 { public static void main(String args[]) { Book monney = new Book();//声明并实例化对象 monney.price = 10; monney.num = 20; System.out.println(monney.getMonney(10,20)); } }
二,内存分析
类是引用类型,创建时会申请分配内存
堆内存:保存每一个对象的属性,需要new关键字才可以创建
栈内存:保存一块堆内存的地址
1,当使用Book bk = new Book();时,内存情况如下:
为属性赋值之后,如下
2.分步创建对象,实例化
Book monney = null;
monney = new Book();
任何情况下,只要看见了关键词new,就表示开辟堆内存,只要开辟了堆内存,一旦堆内存空间开辟了,里面就会有对象中所有属性,所有属性的内容为默认值
实例化对象其实就是开辟堆内存
三,类的封装
class Book { private int price; private int num; public void setPrice(int p) { price = p; } public void setNum(int n) { num = n; } public int getPrice() { return price; } public int getNum() { return num; } public int getMonney(int price, int num) { return price*num; } } public class test2 { public static void main(String args[]) { Book monney = new Book(); monney.setPrice(10); monney.setNum(20); System.out.println(monney.getMonney(10,20)); } }
在构造类的过程中,属性尽量都写成private,这样,属性就对外部隐藏。通过setter方法设置属性值,getter方法获取属性值。外部若要访问类的属性,只有通过setter方法。
四,构造方法
类名 对象名 = new 类名();
1.类名:类的名字,决定对象的属性和方法
2.对象名:对象的唯一标识
3.new:开辟堆内存,没有new则无法实例化对象
4.类名() 实际上是调用了一个和类名相同的方法,即构造方法
我们从来没有定义过构造方法,之所以可以使用,是java在编译时,为我们添加了一个名称与类相同,无参数,无返回值的方法
构造方法只在实例化新对象时使用一次,就是在book = new Book();时使用,而普通的方法实例化对象后可以多次调用
构造方法的作用:在 类对象实例化的时候设置属性的初始化内容,即构造方法是为属性初始化准备的,一个类中至少保留一个构造方法