璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


technology_stack:java:oop

面向对象

一个Java源文件可以包含多个类的定义,但只能定义一个public类,且public类名必须与文件名一致。如果要定义多个public类,必须拆到多个Java源文件中。

new方法,可以创造实例,如:

class Person{
    public int x;
    public int y;
}
 
public class Main{
    public static void main(String[] args){
        Person a = new Person();
    }
}

访问类中的变量 → 使用this变量

继承

extends关键字

class Person {
    private String name;
    private int age;
 
    public String getName() {...}
    public void setName(String name) {...}
    public int getAge() {...}
    public void setAge(int age) {...}
}
 
class Student extends Person {
    private int score;
 
    public int getScore() {}
    public void setScore(int score) {}
}

继承的特点:子类无法访问父类的private字段或private方法。

如果父类使用protected,则可以被子类使用。

super关键字

super关键字表示父类(超类)。子类引用父类的字段时,可以用super.fieldName。

在父类没有无参数构造函数的时候,就需要使用super(…)方法来构造父类。

多态

Java的实例方法调用是基于运行时的实际类型的动态调用,而非变量的声明类型。即如果子类修改了某一方法,在后续使用父类引用时还是运行的该子类的方法。

多态允许添加更多类型的子类实现功能扩展,却不需要修改基于父类的代码。

覆写

如果子类定义了父类方法签名完全相同的方法,则被称为覆写 (Override)。

在函数前进行注解,即 @Override ,可以让编译器帮助检查是否进行了正确的覆写。不过注解是不必须的。

如果在子类覆写中,需要调用父类被覆写的方法,可以使用super关键字来调用。

继承允许子类覆写父类的方法,如果父类不允许覆写,可以把该方法标记为final。

抽象类

如果父类的方法没有什么实际意义,只是作为子类覆写的基础。则可以定义成抽象的方法。使用 abstract 来描述。不过该类本身也需要abstract修饰。

接口

如果某个抽象类没有字段,全是抽象方法,我们可以直接定义成接口类型 interface。

interface Person {
    void run();
    String getName();
}

当一个具体的class去实现interface时,需要使用 implements 关键字.

class Student implements Person {
    private String name;
 
    public Student(String name) {
        this.name = name;
    }
 
    @Override
    public void run() {
        System.out.println(this.name + " run");
    }
 
    @Override
    public String getName() {
        return this.name;
    }
}

在JAVA中,一个类只能继承另一个类,不过接口就可以多重继承。

内部类

定义在类中的类是内部类。内部类不能独立创建实例,必须依附于一个外部类实例才行,因为内部类中还存在可以访问外部类的方法。

/app/www/public/data/pages/technology_stack/java/oop.txt · 最后更改: 2023/03/06 06:24 由 温婕莺