类、抽象类、接口、对象、继承、实现等之间的关系

本文基于java来描述,c++也有很多类似的概念,大体上应该类似。

类和对象

类是java最基本的类型,对象是类的实例化

类和对象是java中最基础的概念,java所有的代码都是基于类class去写的。例如常用的主函数写法public static void main(String[] args),就是将此函数funtion写在了主类中,变为了一个主类的公共方法。对象是则是new出来的实例化类。在下面代码中,Hello是函数主类,person则是类的实例化。

public class Hello {
    private String name;

    public void setName(String name) {
        this.name = name;
    }
    public void getName(){
        System.out.println(this.name);
    }

//    public Hello(String name){
//        this.name = name;
//    }

    public static void main(String[] args) {
        Hello person = new Hello();
        person.setName("Li Ming");
        person.getName();
    }
}

抽象类和接口

抽象类是用abstract声明的类,接口是用interface则是和类属于同一层面。

抽象类

抽象类是某些信息还不明确时,建立的类,其不能被实例化,只能用于继承

public abstract class Thing {
    private String name;

    public Thing(String name){
        // 构造了一个Thing
        this.name = name;
    }

    public String getName(){
        return this.name;
    }
}

继承实例

public class Hello extends Thing {
    private int year;
    public Hello(String name){
        super(name);
        this.year = 8;
    }

    public int getYear() {
        return year;
    }

    public static void main(String[] args) {
        Hello b = new Hello("Liming");
        System.out.println(b.getName()+b.getYear());
    }
}

接口

  1. 接口使用interface声明,其可以理解为一个完全公开只有结构没有内容的模具。
  2. 接口中的变量会被隐式的指定为 public static final 变量,接口中的方法会被隐式的指定为 public abstract。
  3. 抽象方法只能出现抽象类和接口中。抽象方法不能写函数内容,需要让继承或实现的类写函数内容。
  4. 一个类只能继承一个抽象类,却可以实现多个接口。
public interface Thing {
    String word = "我是一个抽象类";
    void setName(String name);
    String getName();
}

实现这个接口的例子如下

public class Hello implements Thing {
    private String name;
    private int year;
    Hello(int year){
        this.year = year;
    }
    public int getYear() {
        return year;
    }

    @Override
    public void setName(String name) {
        this.name = Thing.word+name;
    }

    @Override
    public String getName() {
        return this.name;
    }
    public static void main(String[] args) {
        Hello a = new Hello(8);
        a.setName("Hello");
        System.out.println(a.getName()+a.getYear());
    }
}
posted @ 2022-03-11 15:47  宁宁鸡a  阅读(162)  评论(0编辑  收藏  举报