学习内容:
1.使用Excel制定一个简单的项目开发计划表;
2.访问控制修饰符在类设计中的意义及使用;
3.基本数据类型和引用数据类型在内存中的运行原理;
4.类的成员方法以及方法重载的意义;
5.构造器的使用以及构造器的重载;
6.封装在类设计中的应用。
重点内容:
类的三大部件:成员变量、方法、构造器。
一.成员变量:
语法:
[修饰符] 数据类型 成员变量名 [= 默认值];
- 修饰符:可以省略,也可以是 public protected private static final,其中 public
protected private 只允许出现一个。 数据类型:可以是任意的数据类型(包含基本数据类型、类类型、数组类型)
默认值:如果是类类型的,没有定义默认值,那么成员变量的值为 null,如果是基本数据,没有定义默认值,那么成员变量的值是有意义的,比如
int 就是 0,boolean 就是 false。
二.方法:
[修饰符] 方法的返回值数据类型 方法名(形参列表) {
方法体语句;
}
- 修饰符:可以省略,也可以是 public protected private static final abstract,其中 public protected private 只允许出现一个
- 返回值:可以是数据类型(不要忘了自定义的数据类型),也可以是 void,如果定义了返回值,那么就必须在 return
后面跟随该类型的值或者对象。 - 方法名:一般首字母小写,也适用驼峰命名法则,一般是动词在前,名词在后,不易过长
- 形参列表:定义方法可以接受的参数,由 0-N 个 「数据类型 参数名」通过 「,」
组合的。一旦方法指定了形参,那么在调用的时候就必须一一对应的传入实参。
三.构造器:
语法:
[修饰符] 类名([参数列表]) {}
- 构造器是一个特殊的方法,方法名就是类名,没有返回值(和 void
是有区别的),构造器是类创建对象的唯一途径。如果一个类没有显式的定义一个构造器,那么编译器会给这个类默认的定义一个没有参数的构造器。 - 如果显式的定义了一个构造器,那么编译器就不会给类定义默认的空参数构造器。
例子:
public class Student1 {
// 构造器
Student1(String name, int age, String code) {
this.name = name;
this.age = age;
this.code = code;
}
// 成员变量
String name;
int age;
String code;
// 方法
String intro() {
return "我叫"+this.name+",我的学号是"+this.code+",我今年"+this.age+"岁了。";
}
void listen() {
System.out.println(this.name + "在上课。");
}
}
使用类构建对象
public static void main(String[] args) {
// 构建一个对象:调用类的构造器
Student1 hehao = new Student1("何浩", 20, "C25");
// 用对象:给属性赋值
hehao.birthday = new Date(); // 赋值
System.out.println(hehao.code); // 获取属性值
// 用对象:调用对象的方法
System.out.println(hehao.intro());
hehao.listen();
}
this 关键字:
Java 中使用 this 关键字,指向调用该方法的对象。根据 this 所在的位置,大致分为两种:
- 出现在构造器中:引用该构造器正在初始化的对象;
- 普通方法中:调用该方法的对象。
this 用于在类定义中,获取当前对象的属性,或者调用当前对象的方法。
在类定义中,可以省略 this 关键字去调用属性或者方法,但是在类被编译的时候,编译器还是会加上 this 关键字。所以强烈建议在类定义时如果要调用该类中的普通成员变量或者方法,还是要把 this 加上去。
用 static 修饰的方法中是不能使用 this 关键字的。
Student1(String name, int age, String code) {
this.name = name;
this.age = age;
this.code = code;
}
String intro() {
return "我叫" + this.name + ",我的学号是" + this.code + ",我今年" + this.age + "岁了。";
}
void listen() {
System.out.println("自我介绍:" + this.intro() + " " + this.name + "在上课。");
return;
}
static String fun2() {
return this.intro(); // 错误代码
}