Java基础之:类与对象
Java是面向对象的编程语言。
那么什么是对象呢? 什么又是类呢? 现实案例理解:
人类 与 小范 : 人类就是一个类,而小范就是这个类中的一个对象
狗 与 小白 : 狗就是一个类,而小白 就是这个类中的一个对象
那么,不管是小范 还是 小白 ,都会有一些特定的属性。比如小范的年龄,小白的体重...
为什么使用类与对象?
当基本数据类型不够用的时候,我们就自己声明一些类,来使用。
代码实现
类的声明: class 类名 { }
对象属性访问符: "." , 使用: 对象名.属性名
public class Test{ public static void main(String[] args){ //声明一个Person对象 p Person p = new Person(); //对象p 的属性赋值 p.name = "小范"; p.age = 20; //声明一个Dog对象 d Dog d = new Dog(); //对象d 的属性赋值 d.name = "小白"; d.wide = 10; } } class Person{ String name; int age; } class Dog{ String name; int wide; }
属性/成员变量
属性也叫做成员变量 , 而我们上面定义的name、age、wide 都是成员变量。
属性的定义: 访问修饰符 属性类型 属性名;
说明:
-
属性可以是基本数据类型,也可以是引用数据类型。例如 Person 中可以有一个属性是 Dog 类型的对象 d。
-
属性如果不进行赋值,则会有默认值。这里默认值的取值与数组中的默认值取值一样。
-
不同的对象是相互独立的,互相不影响的。一个对象对属性进行更改,对另一个对象不会有影响。例如:有两个人分别是 小黄 和 小范,如果小范体重增加了10kg,对小黄并没有影响。
-
属性有访问修饰符,它们按可访问范围分为:public>protected>默认(default)>private。
public class Test{ public static void main(String[] args){ //对象p1 Person p1 = new Person(); //对象p1 的属性赋值 p1.name = "小范"; p1.age = 20; //对象p2 Person p2 = new Person(); //对象p2 的属性赋值 p2.name = "小黄"; p2.age = 18; //改变 p1 的age属性与name属性 , p2不会受到影响 p1.name = "小雨"; p1.age = 19; } } class Person{ String name; int age; }
内存图理解
对象是引用类型的,所以对象和数组以及String字符串一样,存在赋值问题。例如
public class Test{ public static void main(String[] args){ //对象p1 Person p1 = new Person(); //对象p1 的属性赋值 p1.name = "小范"; p1.age = 20; Person p2 = p1; p2.age = 18; //这时 p1.age 也就等于 18 } } class Person{ String name; int age; }
内存图理解
内存图说明:
1) 栈: 一般存放基本数据类型(局部变量)
2) 堆: 存放对象(Cat cat , 数组等)
3) 方法区:常量池(常量,比如字符串), 类加载信息
程序流程分析:
1) 先加载Person 类 , 只会加载一次
2) 在堆中,分配空间[地址],并进行默认初始化,比如 name=null age = 0
3) 把堆中地址,返回给 p1
4) 进行指定初始化 name = “小范” age = 20
5) 在栈空间中声明一个p2,将p1在栈空间中保存的堆地址复制给p2