1. 什么是类?什么是对象?
-
现实生活中是由很多很多对象组成的,基于对象抽出了类
-
对象:软件中真实存在的单个个体/东西
类:类型/类别,代表一类个体
-
类是对象的模板/模子,对象是类的具体的实例
-
类中可以包含:
- 对象的属性/特征-----------------------------成员变量
- 对象的行为/动作/功能----------------------成员方法
-
一个类可以创建多个对象
2. 如何创建类?如何创建对象?如何访问成员?
//学生类
public class Student {
//成员变量----对象的属性
String name;
int age;
String address;
//方法-----对象的行为/功能
void study() {
System.out.println(name + "正在学习...");
}
void sayHi() {
System.out.println("大家好,我叫" + name + ",今年"+age + "岁了,家住" + address);
}
}
//学生类的测试类
public class StudentTest {
public static void main(String[] args) {
//创建一个学生对象
Student student = new Student();
//给成员变量赋值
student.name = "张三";
student.age = 18;
student.address = "鹅城";
//调用方法
student.study();
student.sayHi();
}
}
3. 方法的签名:方法名+参数列表
4. 方法的重载(overload/overloading):
-
发生在同一类中,方法名相同,参数列表不同
public class Aoo { void show() {} void show(String name) {} void show(int age) {} void show(String name, int age) {} void show(int age, String name) {} //int show(){ return 1; } // 编译错误,重载与返回值类型无关 //void show(String address){} // 编译错误,重载与参数名称无关 }
-
编译器在编译时会根据方法的签名自动绑定方法
public class OverloadDemo { public static void main(String[] args) { Aoo o = new Aoo(); o.show(); o.show("张三"); o.show(18); o.show("张三", 18); o.show(18, "张三"); } }
5. 构造方法:构造函数、构造器、构建器-----------------------给成员变量赋初值的代码
-
作用:给成员变量赋初值
-
与类同名,没有返回值类型(连void都没有)
-
在创建(new)对象时被自动调用
-
若自己不写构造方法,编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
-
构造方法可以重载
public class Student { String name; //成员变量(整个类中) int age; String address; // 无参构(如果不自己写构造,系统默认提供无参构造) // Student() {} // 有参构造 Student(String name, int age, String address) { this.name = name; this.age = age; this.address = address; } void sayHi() { System.out.println("大家好,我叫" + name + ",今年" + age+"岁了,家住" + address); } } public class ConsDemo { public static void main(String[] args) { //Student zs = new Student(); //编译错误,Student类没有无参构造方法 Student student = new Student("张三", 18, "鹅城"); student.sayHi(); } }
6. this:指代当前对象,哪个对象调用方法它指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
-
this.成员变量名---------------------------访问成员变量
当成员变量与局部变量同名时,若想访问成员变量,则this不能省略
-
this.方法名()--------------------------------调用方法(一般不用)
-
this()------------------------------------------调用构造方法(一般不用)