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方法永远不受到实例化对象或结构的限制,永远可以直接通过类名称直接调用!!
posted @   盘思动  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需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
点击右上角即可分享
微信分享提示