凉城旧巷
Python从入门到自闭,Java从自闭到放弃,数据库从删库到跑路,Linux从rm -rf到完犊子!!!

面向对象

一、自定义类

public class 类名{
    修饰符 数据类型 变量名 = 值;
    
    修饰符 返回值类型 方法名(参数列表){
        ...
    }
}
public class Person{
    private String name = "tom";
    
    public String setName(String name){
        this.name = name;
    }
}
  • 使用private修饰符,外部就无法直接操作类中成员变量

  • 可以通过在类中定义方法,setXXX()getXXX()来设置、获取成员变量

  • public方法定义的属性,外部可以直接访问。

  • private方法不允许外部调用

  • 可以使用一个隐含的变量this,它始终指向当前实例。因此,通过this.field就可以访问当前实例的字段。

    如果没有命名冲突,可以省略this

二、构造方法

构造方法是如此特殊,所以构造方法的名称就是类名。构造方法的参数没有限制,在方法内部,也可以编写任意语句。但是,和普通方法相比,构造方法没有返回值(也没有void),调用构造方法,必须用new操作符。

注意:

  • 在未自定义构造方法时,自动创建构造默认方法public 类名(){},并调用该构造方法
  • 一旦自定义了构造方法,就不会创建默认构造方法
  • 可以定义多个构造方法,编译器根据参数自动判断调用哪一个构造方法
  • 可以在一个构造方法内部调用另一个构造方法,this(参数列表)
public class Person{
    private String name;   // 引用类型的字段默认是null
    private int age;   // 数值类型的字段用默认值
    
    // 由于自定义了有参构造方法,编译器不会自动创建无参构造方法,所以必须手动创建无参构造方法
    public Person(){
        
    }    
    
    // 构造方法,方法名和类名相同。在new对象的时候,为对象赋初始值
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    
    // 构造方法间的互相调用
    public Person(String name){
        this(name,18)
    }
}

public class Main{
    public static void main(String[] args){
        Person p1 = new Person();    // 调用无参构造方法,初始化成员变量
		Person p2 = new Person('tom',18);   // 调用有参构造方法,初始化成员变量
    }
}

创建对象实例所干事情

  1. 先初始化字段,例如,int age = 10;表示字段初始化为10double salary;表示字段默认初始化为0String name;表示引用类型字段默认初始化为null
  2. 执行构造方法的代码进行初始化。

三、方法重载

定义多个方法时,如果它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名方法,

这种方法名相同,但各自的参数不同,称为方法重载。

public class Person{
    public void eat(){
        System.out.print("吃饭")
    }
    
    public void eat(String food){
        System.out.print("吃" + food)
    }
}
posted on 2020-01-08 15:08  凉城旧巷  阅读(113)  评论(0编辑  收藏  举报