02_Java对象和类

java作为一门面向对象的语言,实现了面向对象的以下这些概念:

  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 重载

类和对象

类是对对象的抽象(可以认为是生成类的模板),而对象是类的实例,对象拥有类的公共属性和方法,同时也可以对这些属性和方法进行重写和重载,这不仅仅在java中是这样的概念,在JavaScript等面向对象的编程语言中都大同小异。
现在创造一个简单的类:

public class ClassTest {
    String breed;
    int size;
    String colour;
    int age;

    void eat() {
    }

    void run() {
    }

    void sleep() {
    }

    void name() {
    }

    public static void main(String[] args) {
    }
}

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

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。

构造方法

每个类都有构造方法。如果代码中没有显式定义类的构造方法。java编译器将会为该类提供默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须和类同名,一个类可以有多个构造方法。

public class Puppy{
    public Puppy(){
    }
 
    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}

创建对象

对象是根据类创建的(这个过程叫做类的实例化),在java中,同样使用new关键字来创建对象,对象的创建需要以下三个步骤:

  • 声明 声明一个对象,包括对象的名称和类型。
  • 实例化 使用new关键字来实例化创建对象。
  • 初始化 使用new关键字创建对象时,会调用构造方法初始化对象。
    例子:
public class Dog {
    String name;

    public Dog(String name) {
        this.name = name;
        System.out.println("name is: " + name); // name is: Kokki
    }

    void sayName() {
        System.out.println(this.name);
    }

    public static void main(String[] args) {
        Dog myDog = new Dog("Kokki");
        myDog.sayName(); // Kokki
    }
}

添加类的方法

在上面的例子中继续添加方法:

public class Dog {
    String name;
    int age;
    String category = "Kokki";
    static String gender = "male";

    public Dog(String name) {
        this.name = name;
        System.out.println("name is: " + name); // name is: Kokki
    }

    void sayName() {
        System.out.println(this.name);
    }

    void sayAge() {
        System.out.println("age is: " + age);
    }

    void setAge(int ageArg) {
        age = ageArg;
    }

    public static void main(String[] args) {
        Dog myDog = new Dog("Kokki");
        myDog.sayName(); // Kokki
        myDog.sayAge(); // age is: 0
        myDog.setAge(10);
        myDog.sayAge(); // age is: 10
        System.out.println(myDog.category);
        // 测试静态关键字 static是否和ts里面的类似
        System.out.println(Dog.gender);
    }
}

源文件声明规则

  • 一个源文件中只能有一个public类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和public类的类名保持一致
  • 如果一个类定义在某个包中,那么package语句应该在源文件首行
  • 如果源文件包含import语句,那么应该在package语句和类定义之间。如果没有包含package语句,那么import语句应该在源文件中最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
    类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。
上一篇:redission的看门狗失效问题


下一篇:[Java] 泛型Generic