对象和类的基本概念
Java语言中的对象是对现实生活的模拟,现实生活中的对象存在于现实生活中,Java语言中的对象(实例)在计算机内存中。ps:Java中的对象也称实例。
我们在认识事物时要知道他的属性和功能,能做哪些事情,Java中的对象也是如此,只是叫法不同,属性也称全局变量(也称作成员变量),功能也可称之为方法。
Java语言把一组对象中相同的属性和方法抽象到一个Java源文件中就形成了一个类。
类是对象的模板,对象是类的实例,类只有通过对象才可以使用,但是在写代码时会先写类,在产生对象。类不能直接使用,对象可以直接使用。
类是一种数据类型,是对象的数据类型(不同于int等基本类型:类具有方法)。
类与对象的定义和使用
类的定义:
在Java中定义类,使用关键字class完成。语法如下:
public class 类名 {
//属性
属性1类型 属性1;
属性2类型 属性2;
…
属性n类型 属性n;
//方法
方法1;
方法2;
…
方法m;
}
先定义类名,再定义属性,最后定义方法。
类名定义规则:类名的命名规则:1、符合标识符命名规范;2、类名必须使用英文字母,首字母应大写,如Hello、People等。3、当类名由多个”单词”组合而成时,每个单词的首字母都要大写。如 Time、Game、Dog、DateUtil等。
对象的定义和使用:
首先声明一个类:
class Person { // 类名称首字母大写
String name ;
int age ;
public void tell() { // 没有static
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}
类定义完成后,肯定无法使用,需要创建对象来调用它。类属于引用数据类型,所以对象的产生格式如下:
通过new关键字创建对象,创建对象又称实例化对象。比如:类名称 对象名称 = new 类名称 () ;
此类的声明对象方式为:
Person person = new Person();
使用”.”运算符访问对象的属性和方法。定义方法:对象.属性:表示调用类之中的属性; 对象.方法():表示调用类之中的方法。下面是对对象的属性和方法的访问方式:
person.name = "小李";
person.tell();
例子:(使用对象操作类)
package com.wz.classandobj;
class Person {
String name ;
int age ;
public void get() {
System.out.println("姓名:" + name + ",年龄:" + age);
}
}
public class TestDemo {
public static void main(String args[]) {
Person per = new Person() ;// 声明并实例化对象
per.name = "张三" ;//操作属性内容
per.age = 30 ;//操作属性内容
per.get() ;//调用类中的get()方法
}
}
结果为:
姓名:张三,年龄:30
那么,说了这么多,我们在实例化一个类时内存中到底有什么变化呢?
我们从内存角度分析,首先给出两种内存空间的概念:
(1) 堆内存:保存对象的属性内容。堆内存需要用new关键字来分配空间。
(2) 栈内存:保存的是堆内存的地址(可以理解为栈内存保存的是对象的名字)
任何情况下,只要看见关键字new,都表示要分配新的堆内存空间,一旦堆内存空间分配了,里面就会有类中定义的属性,并且属性内容都是其对应数据类型的默认值。