9.2 抽象类相关说明
- 抽象类铁律:不能实例化!!!!!
demo1 抽象类可以提供构造方法的;
abstract class Message {// 定义抽象类;
private String type;
// 此抽象类中没有提供无参构造,所以子类必须明确调用单参构造
public Message(String type){
this.type = type;
}
public abstract String getConnectInfo();//定义抽象方法;,没有方法体
public String getType(){
return this.type;
}
}
class DatabaseMessage extends Message {
public DatabaseMessage(String type){// 子类构造---父类没有无参构造,子类必须调用父类的有参构造;
super(type);
}
@Override
public String getConnectInfo(){// 方法覆写,定义方法体
return "[" + super.getType() + "]数据库连接信息.";
}
}
class HelloWorld {
public static void main(String[] args) {
Message msg = new DatabaseMessage("Oracle");// 子类为父类实例化;
System.out.println(msg.getConnectInfo());
}
}
- 抽象类无法直接实例化
- 抽象类中允许没有抽象方法;即使没有抽象方法,也无法直接使用关键词new直接来实例化抽象类;
- 即便抽象类没有实例化对象,那么也无法直接使用关键词new获取抽象类的对象,必须依靠子类对象完成。
demo2 在抽象类中定义static方法
- 抽象类可以提供有static方法,并且该方法不受到抽象类对象的局限。
abstract class Message {// 定义抽象类;--抽象类一定不能用final来定义;抽象类必须有子类;
public abstract String getInfo();// 定义抽象方法
public static Message getInstance(){// 返回Message对象实例
return new DatabaseMessage();// 实例化子类对象
}
}
class DatabaseMessage extends Message {
@Override
public String getInfo(){
return "MLDN数据库连接信息";
}
}
class HelloWorld {
public static void main(String[] args) {
Message msg = Message.getInstance();//直接调用static方法
System.out.println(msg.getInfo());
}
}
- static方法永远不受到实例化对象或结构的限制,永远可以直接通过类名称直接调用!!
相信坚持的力量,日复一日的习惯.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2022-06-09 win 安装mysql
2018-06-09 mysql 给用户赋值权限
2018-06-09 nginx如何配置虚拟主机
2018-06-09 mysql 外键
2018-06-09 tp价格除以100