1、面向过程编程与面向对象编程

  • 面向过程POP-Procedure Oriented Programming:考虑的是整个事件完成需要经过几个步骤,重点关系的是过程。
  • 面向对象OOP-Object Oriented Programming:考虑的是整个事件完成有哪些对象(事物)参与进来

    2、面向对象基本概念

  • 类:一组具有相同特征(属性/成员变量)和行为(成员方法/方法)的事物的集合。

  • 对象:万事万物皆对象,具体的个体。
  • 类和对象的关系:抽象与具体的关系;类是一个抽象的概念,对象是一个具体的个体

    3、类的组成与定义

  • 类的组成:属性 + 方法(扩展:还可以有成员内部类、代码块)

    • 属性:刻画这一类事物的特征
    • 方法:刻画这一类事物的行为
  • 类的定义语法

    1. [修饰符] class 类名{
    2. [修饰符] 类型 属性名;
    3. 返回值类型 方法名(形参列表){
    4. }
    5. }
  • 类的实例化

    • 类名 对象名 = new 类名();
  • 访问类的属性:对象名.属性名;
  • 访问类的方法:对象名.方法名(形参列表); ``` Person.java public class Person {

    public String name;

    public int age;

    public void move(){

    1. System.out.println(name+"开始走路");

    } }

Main.java public class Main {

  1. public static void main(String[] args) {
  2. Person person = new Person();
  3. // null 成员变量的默认值
  4. System.out.println(person.name);
  5. // 0 成员变量的默认值
  6. System.out.println(person.age);
  7. person.age = 12;
  8. person.name = "tom";
  9. System.out.println(person.name);
  10. System.out.println(person.age);
  11. // 调用方法
  12. person.move();
  13. }

}

  1. <a name="J60Dq"></a>
  2. ### 4、构造方法
  3. - 构造方法:实例化对象new时调用的方法
  4. - 特征:方法名与类名相同;无返回值类型的声明
  5. - 类里有一个默认的无参构造方法(隐式构造方法),如果写了带参数的构造方法,实例化对象时又想用无参构造方法,则必须把无参构造方法写出来

public class Person {

  1. public String name;
  2. public int age;
  3. public Person(String name, int age) {
  4. this.name = name;
  5. this.age = age;
  6. }
  7. public Person(String name) {
  8. this.name = name;
  9. }
  10. public Person(int age) {
  11. this.age = age;
  12. }
  13. public Person() {
  14. }

}

  1. - 构造方法的调用
  1. Person p1 = new Person();
  2. Person p2 = new Person(12);
  3. Person p3 = new Person("tom");
  4. Person p4 = new Person("tom", 12);
  1. <a name="iGLXG"></a>
  2. ### 5、成员变量和局部变量
  3. - 成员变量(在类中定义,用来描述对象的属性)
  4. - 作用域:在整个类内部都是可见的
  5. - java会给成员变量一个初始值
  6. - 成员变量和局部变量同名时,局部变量具有更高的优先级
  7. - 局部变量(在类的方法中定义,在方法中临时保存数据)
  8. - 作用域:仅限于定义它的方法
  9. - java不会给局部变量赋予初始值
  10. - 同一个方法中,不允许有同名局部变量;不同的方法可以有同名的局部变量

public class Person {

  1. public String name;
  2. public int age;
  3. public Person(String name, int age) {
  4. this.name = name;
  5. this.age = age;
  6. }
  7. public Person(String name) {
  8. this.name = name;
  9. }
  10. public Person(int age) {
  11. this.age = age;
  12. }
  13. public Person() {
  14. }
  15. public void move(){
  16. String name = "Jack";
  17. // 此处使用的name是局部变量 Jack
  18. System.out.println(name+"开始走路");
  19. // this使用的name是成员变量
  20. System.out.println(this.name+"开始走路");
  21. }

}

  1. <a name="fxhFX"></a>
  2. #### this关键字
  3. - this关键字的作用
  4. - this用在构造方法里,区分成员变量和局部变量重名的情况,表示当前对象
  5. - this用在构造方法里,在一个构造方法里调用另一个构造方法,this语句一定要处于整个构造方法的第一行
  6. - this用在普通方法里,在访问成员变量和其它方法时,在前面会默认加上this

public class Person {

  1. public String name;
  2. public int age;
  3. public Person(String name, int age) {
  4. this.name = name;
  5. this.age = age;
  6. }
  7. public Person() {
  8. this("tom",12);
  9. }

}

  1. <a name="E3rxu"></a>
  2. ### 6、方法重载
  3. - 方法重载:在同一个类里,多个方法的方法名一致,形参列表不一致(包含形参类型,顺序,个数)
  4. - 形参名不参与比较,返回类型不参与比较
  5. - Student(String age){} Student(String sex){} //不属于方法重载

public class Person {

  1. public String name;
  2. public int age;
  3. public void move(){
  4. }
  5. public void move(String name, int age){
  6. }
  7. public void move(int age, String name){
  8. }

} ```