接口和抽象类
接口
接口中可以包含变量,方法。接口无法被实例化,接口没有构造方法。
接口中的变量会被隐式指定为public static final
接口中的方法会被隐式指定为public abstract
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
总结:
-
抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
-
抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
-
抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
-
构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
-
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
本文作者:xiaoovo
本文链接:https://www.cnblogs.com/xiaoovo/p/17010773.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步