1、面向过程编程与面向对象编程
- 面向过程POP-Procedure Oriented Programming:考虑的是整个事件完成需要经过几个步骤,重点关系的是过程。
面向对象OOP-Object Oriented Programming:考虑的是整个事件完成有哪些对象(事物)参与进来
2、面向对象基本概念
类:一组具有相同特征(属性/成员变量)和行为(成员方法/方法)的事物的集合。
- 对象:万事万物皆对象,具体的个体。
类和对象的关系:抽象与具体的关系;类是一个抽象的概念,对象是一个具体的个体
3、类的组成与定义
类的组成:属性 + 方法(扩展:还可以有成员内部类、代码块)
- 属性:刻画这一类事物的特征
- 方法:刻画这一类事物的行为
类的定义语法
[修饰符] class 类名{
[修饰符] 类型 属性名;
返回值类型 方法名(形参列表){
}
}
类的实例化
- 类名 对象名 = new 类名();
- 访问类的属性:对象名.属性名;
访问类的方法:对象名.方法名(形参列表); ``` Person.java public class Person {
public String name;
public int age;
public void move(){
System.out.println(name+"开始走路");
} }
Main.java public class Main {
public static void main(String[] args) {
Person person = new Person();
// null 成员变量的默认值
System.out.println(person.name);
// 0 成员变量的默认值
System.out.println(person.age);
person.age = 12;
person.name = "tom";
System.out.println(person.name);
System.out.println(person.age);
// 调用方法
person.move();
}
}
<a name="J60Dq"></a>
### 4、构造方法
- 构造方法:实例化对象new时调用的方法
- 特征:方法名与类名相同;无返回值类型的声明
- 类里有一个默认的无参构造方法(隐式构造方法),如果写了带参数的构造方法,实例化对象时又想用无参构造方法,则必须把无参构造方法写出来
public class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this.name = name;
}
public Person(int age) {
this.age = age;
}
public Person() {
}
}
- 构造方法的调用
Person p1 = new Person();
Person p2 = new Person(12);
Person p3 = new Person("tom");
Person p4 = new Person("tom", 12);
<a name="iGLXG"></a>
### 5、成员变量和局部变量
- 成员变量(在类中定义,用来描述对象的属性)
- 作用域:在整个类内部都是可见的
- java会给成员变量一个初始值
- 成员变量和局部变量同名时,局部变量具有更高的优先级
- 局部变量(在类的方法中定义,在方法中临时保存数据)
- 作用域:仅限于定义它的方法
- java不会给局部变量赋予初始值
- 同一个方法中,不允许有同名局部变量;不同的方法可以有同名的局部变量
public class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this.name = name;
}
public Person(int age) {
this.age = age;
}
public Person() {
}
public void move(){
String name = "Jack";
// 此处使用的name是局部变量 Jack
System.out.println(name+"开始走路");
// this使用的name是成员变量
System.out.println(this.name+"开始走路");
}
}
<a name="fxhFX"></a>
#### this关键字
- this关键字的作用
- this用在构造方法里,区分成员变量和局部变量重名的情况,表示当前对象
- this用在构造方法里,在一个构造方法里调用另一个构造方法,this语句一定要处于整个构造方法的第一行
- this用在普通方法里,在访问成员变量和其它方法时,在前面会默认加上this
public class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
this("tom",12);
}
}
<a name="E3rxu"></a>
### 6、方法重载
- 方法重载:在同一个类里,多个方法的方法名一致,形参列表不一致(包含形参类型,顺序,个数)
- 形参名不参与比较,返回类型不参与比较
- Student(String age){} Student(String sex){} //不属于方法重载
public class Person {
public String name;
public int age;
public void move(){
}
public void move(String name, int age){
}
public void move(int age, String name){
}
} ```