Java抽象类与抽象方法
抽象类与抽象方法
用abstract 关键字来修饰的类,称为抽象类。
用 abstract 修饰的方法,称为抽象方法。
抽象方法:只有方法的声明,没有方法的实现,以分号结束。
public abstract void talk();
含有抽象方法的类必须声明为抽象类。
抽象类不能被实例化,抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,比提供方法体。若没有重写全部的抽象方法,仍为抽象类。
抽象类中一定有构造器,便于子类实例化时调用。
抽象类可以实现接口(如:当未全部重写接口中的抽象方法的类,需要定义为抽象类)、抽象类能继承非抽象类(如:Object类)
不能用 abstract 修饰变量、代码块、构造器;
不能用 abstract 修饰私有方法、静态方法、final的方法、final的类。
abstract class Creature{ public abstract void breath(); }
abstract class Person extends Creature{ String name; int age; public Person(){ } public Person(String name,int age){ this.name = name; this.age = age; } //不是抽象方法: public void eat(String foodName){ } //抽象方法 public abstract void eat(); public void walk(){ System.out.println("人走路"); } }
public class Test { public static void main(String[] args) { A a = new B(); a.m1(); a.m2(); } }
抽象类的匿名子类
public class PersonTest { public static void main(String[] args) { method(new Student());//匿名对象 Worker worker = new Worker(); method1(worker);//非匿名的类非匿名的对象 method1(new Worker());//非匿名的类匿名的对象 System.out.println("********************"); //创建了一匿名子类的对象:p Person p = new Person() { @Override public void eat() { System.out.println("吃东西"); } @Override public void breath() { System.out.println("好好呼吸"); } }; method1(p); System.out.println("********************"); //创建匿名子类的匿名对象 method1(new Person() { @Override public void eat() { System.out.println("吃好吃东西"); } @Override public void breath() { System.out.println("好好呼吸新鲜空气"); } }); } public static void method1(Person p) { p.eat(); p.breath(); } public static void method(Student s) { } }
本文来自博客园,作者:Lz_蚂蚱,转载请注明原文链接:https://www.cnblogs.com/leizia/p/18379475
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步