抽象
abstract修饰符
在继承结构中,上层的类会更具有通用性,不同的子类可以以不同的实现去重写父类继承下来的功能。如计算器,为了完成科学计算的、会计使用的、普通的等,以不同的方式完成数字计算。像这类的在众多的方式中我们抽取出共同的、本质性的特征,舍弃其非本质的特征的过程,这称为抽象。在Java中,关键字abstract
表示抽象,它常用于修饰类、方法等,他们称为抽象类或抽象方法
3.1抽象类和抽象方法的关系
有抽象方法的类必须是抽象类,但抽象类中不一定要有抽象方法
3.2格式
//抽象类
public abstract class Person{
//抽象方法
public abstract void go();
}
抽象方法没有具体的实现,必须由其继承的子类去实现抽象方法
3.3作用
抽象类不能被实例化(new)创建对象,但它可以被子类继承。抽象方法没有具体的实现,只有方法的声明,由子类去重写实现。子类继承抽象类时必须重写实现抽象方法,否则该子类也要声明为抽象类
public abstract class Person{
private int num;
public Person(){}
public Person(int num){ this.num = num;}
public abstract void getDescription();
public int void getNum(){
return this.num;
}
}
public class Teacher extends Person{
public Teacher(){ super() }
public Teacher(int num){ super(num) }
public void getDescription(){
//code,对个人的描述
}
}
//编译报错,abstract修饰的类不能实例化
Person per = new Person();
//编译成功,可以用abstract修饰的类做引用类型,子类的构造器调用了父类的构造,并将‘12’传参过去
Person tea = new Teacher(12);
tea.getNum;//12,因为Teacher没有重写父类的getNum方法,所以调用的是父类的getNum方法
抽象类不能实例化,但抽象类也有构造器,子类在实例化时也是会调用抽象父类的构造器。
子类继承抽象类,重写实现抽象方法,抽象类和抽象方法可以看似框架,子类是去实现具体的内容
private static final
不能与abstract
同时修饰,被abstract修饰只有被继承或重写才有意义,而这三个修饰符是不能被继承或重写的抽象类的普通方法也像继承一样可以供子类调用或重写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!