Java 对象和类

2020-01-08  本文已影响0人  CoderGuogt

Java 作为一种面向对象语言,支持以下基本概念:

Java 中的类

类可以看成是创建 Java 对象的模板.
eg· 创建一个 Dog 类, Dog 拥有 breed, age, color三种状态,并且还拥有 barking, hungry, sleeping三种行为.

public class Dog {
    // 狗的品种
    String breed;
    // 狗的年龄
    int age;
    // 狗的颜色
    String color;

    // 狗叫方法(行为)
    void barking() {
        System.out.println("狗开始叫了");
    }
    // 狗饿了方法
    void hungry() {
        System.out.println("狗饿了");
    }
    // 狗正在睡觉
    void sleeping() {
        System.out.println("狗子正在睡觉");
    }
}

一个类可以包含以下类型的变量:

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法,默认的构造方法是 类名(),这里是 Dog(). 当我们自定义了一个构造方法的时候,这时候Java编译器不再会为该类创建一个默认的构造方法

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

下面为 Dog 类创建构造方法

class Dog {
    // 狗的名字
    String name;
    // 狗的品种
    String breed;
    // 狗的年龄
    int age;
    // 狗的颜色
    String color;

    // 构造方法
    public Dog(String name, String breed, int age, String color) {
        this.name = name;
        this.breed = breed;
        this.age = age;
        this.color = color;
        System.out.println("狗的名字叫" + this.name + ",今年" + this.age + "岁了," + "品种是" + this.breed + ",是一条" + this.color + "的狗.");
    }
    public Dog(String breed) {
        this.breed = breed;
    }
    public Dog(String breed, int age) {
        this.breed = breed;
        this.age = age;
    }
    public Dog(String breed, int age, String color) {
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // 狗叫方法(行为)
    public void barking() {
        System.out.println(this.name + "开始叫了");
    }
    // 狗饿了方法
    public void hungry() {
        System.out.println(this.name + "饿了");
    }
    // 狗正在睡觉
    public void sleeping() {
        System.out.println(this.name + "正在睡觉");
    }
}

以上代码,给Dog类创建了四个构造方法

public Dog(String name, String breed, int age, String color);
public Dog(String breed);
public Dog(String breed, int age);
public Dog(String breed, int age, String color);

由于这里并没有创建 Dog() 构造方法,所以在创建一个对象的时候,不能使用 Dog dog = new Dog() 方式去创建了.

创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

eg·


public class Test {
    public static void main(String[] args) {
        Dog dog1 = new Dog("旺财", "中华田园犬", 2, "黑色");
        dog1.barking();
        dog1.sleeping();
        dog1.hungry();

        Dog dog2 = new Dog();
        dog2.name = "果子";
        dog2.age = 1;
        dog2.breed = "萨摩耶";
        dog2.color = "白色";
        dog2.sleeping();
        dog2.hungry();
        dog2.barking();
    }
}


class Dog {
    // 狗的名字
    String name;
    // 狗的品种
    String breed;
    // 狗的年龄
    int age;
    // 狗的颜色
    String color;

    // 构造方法
    public Dog() {}
    public Dog(String name, String breed, int age, String color) {
        this.name = name;
        this.breed = breed;
        this.age = age;
        this.color = color;
        System.out.println("狗的名字叫" + this.name + ",今年" + this.age + "岁了," + "品种是" + this.breed + ",是一条" + this.color + "的狗.");
    }
    public Dog(String breed) {
        this.breed = breed;
    }
    public Dog(String breed, int age) {
        this.breed = breed;
        this.age = age;
    }
    public Dog(String breed, int age, String color) {
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // 狗叫方法(行为)
    public void barking() {
        System.out.println(this.name + "开始叫了");
    }
    // 狗饿了方法
    public void hungry() {
        System.out.println(this.name + "饿了");
    }
    // 狗正在睡觉
    public void sleeping() {
        System.out.println(this.name + "正在睡觉");
    }
}

编译以上代码,打印结果为:

编译结果

类创建的成员变量和方法,默认是public类型的,如果需要设置成公共的,可以省略public;如果需要设置成私有的,就需要使用private对成员变量和方法进行修饰

源文件声明规则

当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:

上一篇 下一篇

猜你喜欢

热点阅读