1 类与对象的定义
1. 类的定义。类是对某一种具有共同特征的事物的描述。就如现实世界是由一个个事物组成一样,一个计算机程序也可由一个个的类组成。类是一种用户自定义的数据类型(引用类型),有属性和方法这两个关键元素。例如设计一个类Dog,其属性有breed, name, size, color, age… 其行为有eat, sleep, run, cry…
2. 对象的定义。对象是类的一种实例化,这就像一个物种下会有许多个体一样(大熊猫圆圆、毛豆、蓉宝、芝士…)。下图是对象的一个演示,Dog类下面对应的对象有Dog1, Dog2, Dog3…
类比前面学过的基础数据类型,下面这句话中,int\boolean都是一个类,a是int类的一个对象,b是boolean类的一个对象。
int a = 5;
boolean b = true;
3. 对象在jvm中的内存分布。在栈中创建对象的一个引用(本质上是开辟一块内存空间,这个内存中存放指向堆对象的指针),随后在堆中实际建立这个对象,对象属性若是引用类型(例如下图中的cat.name, cat.color),则将数据放在方法区的常量池空间中;若对象属性是基本类型,则直接存放值。
将一个对象名赋值给另一个对象名,本质上是让这两个对象指向同一块内存,这点跟数组很像。
2 类与对象的创建
1. 类与对象的使用步骤。第一步,定义一个类;第二步,在main()方法中用new创建类对象;第三步,调用类对象中相应的属性和方法
2. 类的创建方式。定义类的名称,然后在类的函数体中定义成员变量和成员方法。例如下图中创建了一个名为Person的类,类中包含成员变量age, name, sal, isPass,包含成员方法speak, Caculate_sum, getSum
class Person{
int age;
String name;
double sa1;
boolean isPass;
// 方法功能:输出"我是一个好人"
public void speak(){
System.out.println("我是一个好人!");
}
// 方法功能:计算1到n的和
public void Caculate_sum(int n){
int sum = 0;
for(int i = 1; i <= n ; i++){
sum = sum + i;
}
System.out.println("sum= " + sum);
}
// 方法功能:计算数字n1与数字n2的和
public int getSum(int num1, int num2){
int sum ;
sum = num1 + num2;
return sum;
}
}
3. 对象的创建方式。有两种创建方式,一是先声明再创建,二是直接创建,这与前面基本数据类型的定义很像。
class Class_test{
public static void main(String[] args){
// 对象的创建方式1: 直接创建
// p1对象名,本质上是对象的一个引用,存放在栈中
// new Person()开辟空间创建真正的对象,存放在堆中
Person p1 = new Person();
System.out.println("age= " + p1.age);
// 对象的创建方式2: 先声明再创建
Person p2;
p2 = new Person();
}
}
class Person{
int age;
String name;
}
3 类属性细节
3.1 定义格式
叫法上,属性=成员变量=field;
定义属性的语法形式为: 访问修饰符 属性类型 属性名
访问修饰符控制属性的访问范围,有四种访问修饰符public, protected, private和默认。属性类型既可以是基本类型,也可以是引用类型;
3.2 调用格式
调用属性的语法形式为: 对象名.属性名
属性不赋值时,其有默认值,规则与数组中一致。