一、概述
- Java是一门面向对象的编程语言,除了基本数据类型(byte ,short, int , long float , double ,boolean,char )以外,Java要求每一个数据类型必须都是一个类。(引用数据类型)
- 类(class): 类是对某一类事物的描述,是抽象的、概念上的定义。
- 对象(object): 对象是实际存在的该类事物的个体,因而也称实例(Instance)。
声明类格式
public class 类名称 {
//声明成员变量
//声明成员方法
}
声明标准类
- 所有成员变量私有化 private
- 为每一个成员变量编写getXxx setXxx方法
- 编写一个无参构造方法
- 编写一个全参构造方法
创建对象
创建属于某个类的对象,需要通过三个步骤来实现:
- 导包:指出使用的类 在什么位置
如果同属于同一个包 不用写 - 声明指向"由类所创建的对象"的变量
- 利用 new 创建新的对象,并指派给先前所创建的变量。
import 包名称.类名称 //写在class文件开头
类名 对象名 = new 类名() ;
访问对象中某个变量或方法
访问变量:对象名称.变量名
访问方法:对象名称.方法名()
二、代码实现
//Student 类
public class Student {
//私有化变量
private String name;
private int age;
//无参构造方法
public Student() {
}
//有参构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package chapter4;
//同一包下可以不用导入
import chapter4.Student;
public class Demo01Student {
public static void main(String[] args) {
Student student = new Student("张三",20); //有参构造
Student student1 = new Student(); //无参构造
System.out.println(student.getName()); //访问对象变量和方法
student.setName("李张三");
System.out.println(student.getName());
}
}
三、补充说明
private 关键字
- private是一个权限修饰符,代表最小权限
- 可以修饰成员变量和成员方法。
- 被private修饰后的成员变量和成员方法,只在本类中才能直接访问。
构造方法:
- 当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
- 是专门用来创建对象的方法
- 通过new 来创建对象时,其实就是在使用构造方法。
修饰符 构造方法名(参数列表){ //构造方法名与所在类名称相同
// 方法体
}
构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。
注意事项
- 如果你不提供构造方法,系统会给出无参数构造方法。
- 如果你提供了构造方法,系统将不再提供无参数构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
//无参构造方法
public Student() {
}
//有参构造方法
public Student(String name, int age) {
this.name = name;
this.age = age;
}
局部变量和成员变量
1:定义位置
- 局部变量:在方法的内部
- 成员变量:方法外,类内
2:作用域
- 局部变量:方法内
- 成员变量:类内
3:初始值
- 局部变量:必须赋值才能使用
- 成员变量:有默认值
类作为成员变量
public class Weapon {
private String name;
public Weapon() {
}
public Weapon(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Hero {
private String name; //英雄名称
private Weapon weapon; //武器名称
public Hero() {
}
public Hero(String name, Weapon weapon) {
this.name = name;
this.weapon = weapon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Weapon getWeapon() {
return weapon;
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
}
public class Demo03Main {
public static void main(String[] args) {
Hero hero = new Hero();
hero.setName("杨戬");
//实例对象赋值
Weapon weapon = new Weapon("激光眼");
hero.setWeapon(weapon);
//匿名对象赋值
hero.setWeapon(new Weapon("激光眼"));
System.out.print(hero.getName());
//注意 hero.getWeapon() 返回的是引用(对象地址)
//疑问weapon的数据类型是引用数据类型
System.out.println(hero.getWeapon().getName());
}
}
同样的 接口也可以作为成员变量