绊夏微凉

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

java抽象类和接口

抽象类

关键字abstract:可以修饰类也可以修饰方法,抽象方法无方法体

public abstract class Person {
    public abstract void getPerson();
}

举例1:抽象类可以有属性,非抽象方法以及抽象方法

public abstract class Person {
    String name;
    int age;
    public abstract void getPerson();
    public void getInformation() {
        System.out.println("name:" + name + ",age:" + age);
    }
}

举例2:抽象类中有抽象方法,被子类继承时,子类必须重写抽象方法或者子类也为抽象类

// Person.java文件
public abstract class Person {
    String name;
    int age;
    public abstract void getPerson();
    public void getInformation() {
        System.out.println("name:" + name + ",age:" + age);
    }
}
// Student.java文件
public abstract class Student extends Person{
}
// Teacher.java文件
public class Teacher extends Person{
    @Override
    public void getPerson() {
        System.out.println("student");
    }
}

接口

接口的定义用interface关键字,实现用implements,可以实现多个接口

public interface Person {
}

举例1:接口的属性:修饰符为public static final,接口的方法:修饰符为public abstract。属性和方法的修饰符可写可不写,一般不写。属性必须赋值并且为常量,一般接口不会定义属性

public interface Person {
    String name = "zhangsan";
    public static final int age = 18;
    void getPerson();
    public abstract void getInformation();
}

举例2:接口的实现

// Person.java文件
public interface Person {
    void getInformation();
}
// Student.java文件
public class Student implements Person{
    @Override
    public void getInformation() {
        System.out.println("student");
    }
}

举例3:实现多个接口

// Person.java文件
public interface Person {
    void getInformation();
}
// Student.java文件
public interface Student {
    void study();
}
// child.java文件
public class child implements Person, Student {
    @Override
    public void getInformation() {
        System.out.println("child");
    }
    @Override
    public void study() {
        System.out.println("study");
    }
}

举例4:接口可以继承多个接口,类只能继承一个类

// Person.java文件
public interface Person {
    void getInformation();
}
// Student.java文件
public interface Student {
    void study();
}
// child.java文件
public interface child extends Person, Student{
    void play();
}
// Pupil.java文件
public class Pupil implements child {
    @Override
    public void play() {
        System.out.println("play");
    }
    @Override
    public void getInformation() {
        System.out.println("pupil");
    }
    @Override
    public void study() {
        System.out.println("study");
    }
}
//Teacher.java文件
public class Teacher{
}
// Manager.java文件
public class Manager {
}
// Headmaster.java文件
public class Headmaster extends Teacher, Manager { 
} //报错
posted on 2021-03-31 15:27  绊夏微凉  阅读(53)  评论(0)    收藏  举报