首页 > 其他分享 >接口和抽象类

接口和抽象类

时间:2022-12-28 17:45:33浏览次数:37  
标签:String void 接口 抽象类 public name

接口

接口中可以包含变量,方法。接口无法被实例化,接口没有构造方法。
接口中的变量会被隐式指定为public static final
接口中的方法会被隐式指定为public abstract
img
idea也在提示这些灰色的public static final和public abstract都是多余的可以不写
要使用接口就要实现它,用implements关键字

public class InterfaceTestImpl implements InterfaceTest {
    @Override
    public void saySomething(String things) {
        System.out.println(name+":"+things);
    }
}
public class Main {
    public static void main(String[] args) {
        InterfaceTest interfaceTest = new InterfaceTestImpl();
        System.out.println(InterfaceTest.name);
        interfaceTest.saySomething("I implement a interface");
    }
}
sora
sora:I implement a interface

抽象类

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
使用:

public abstract class People {
    public String name;
    public int age;
    public People(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void eat(){
        System.out.println("people neet to eat");
    }
    public abstract void sleep();
}

得有一个类去继承它,并且实现这个抽象方法

public class Student extends People{
    public String grade;
    public Student(String name, int age, String grade) {
        super(name, age);
        this.grade = grade;
    }

    @Override
    public void sleep() {
        System.out.println("a student neet to sleep enough");
    }
}
public class Main {
    public static void main(String[] args) {
        People p = new Student("sora",21,"大三");
        p.eat();
        p.sleep();
    }
}
people neet to eat
a student neet to sleep enough

总结:

  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

标签:String,void,接口,抽象类,public,name
From: https://www.cnblogs.com/xiaoovo/p/17010773.html

相关文章