类的定义格式
[修饰符] class 类名 [extends 父类名] [implement 接口名]{
//类体,包括类的成员变量和成员方法
}
- 声明(定义)成员变量
[修饰符] 数据类型 变量名 [=值];
//例如
private String name;//声明一个String类型的变量name
private int age = 20;//定义一个int类型的age,并赋值为20
- 声明(定义)成员方法
[修饰符] [返回值类型] 方法名 (参数类型 参数名1,...){
//方法体
.
.
.
return 返回值;//当方法的返回值类型为void时,return及其返回值都可以省略
}
例子:
public class Person(
int age;//声明int类型的变量
//定义speak()方法
void speak(){
System.out.println("我今年"+age+"岁了");
}
)
定义了一个Person类,并在类中定义了类的成员变量和成员方法,其中Person是类名,age是成员变量,speak()是成员方法。在成员方法中可以直接访问成员变量age。
注意:
定义在类中的变量称为成员变量,定义在方法中的变量成为局部变量。如果在某一个方法中定义的局部变量和成员变量同名,这种情况是可以的,此时通过变量名访问的是局部变量,而不是成员变量,如下:
public class Person(
int age = 10;//类中定义的变量称作为成员变量
//定义speak()方法
void speak(){
int age = 30;//方法内部定义的变量称作是局部变量
System.out.println("我今年"+age+"岁了");
}
)
当有一个程序来调用speak()方法时,输出的值是30,不是10
对象的创建和使用
类名 对象名称 = new 类名();
//例如
Person p = new Person();
"new Person()"用于创建Person类的一个实例对象,"Person p"则是声明一个Person类型的变量p。
小提示:
Java内存分为两种,及栈内存和堆内存。栈内存用于存放基本类型的变量和对象的引用变量(如Person p),堆内存用于存放由new创建的对象和数组。
多看一下代码:
- one
package com.kuang;
public class Application {
public static void main(String[] args) {
//类:抽象的,实例化
//类实例化后会返回一个自己的对象
//student对象就是一个Student类的具体实例
Student student = new Student();
Student xm= new Student();
Student xh = new Student();
xm.name = "小明";
xm.age = 3;
System.out.println(xm.name);
System.out.println(xm.age);
xh.name = "小红";
xh.age = 3;
System.out.println(xh.name);
System.out.println(xh.age);
xh.study();
}
}
package com.kuang;
//学生类
public class Student {
//属性:字段
String name;//null
int age;//0
//方法
public void study(){
System.out.println(this.name+"正在学习");
}
}
- two
package com.kuang;
//引用传递:对象,本质还是值传递
public class Demo04 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
Demo04.change(person);
// person.name = "秦疆";
System.out.println(person.name);//秦疆
}
public static void change(Person person){
//person是一个对象:指的是---> Person person = new Person();这是一个具体的人,可以改变属性
person.name = "秦疆";
}
}
//定义一个Person类,有一个属性:name
class Person{
String name;
}