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是局部变量 JackSystem.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){}
} ```
