1.抽象类的定义及使用
abstract class Message { // 定义抽象类
private String type; // 消息类型
public abstract String getConnectInfo(); // 抽象方法
public void setType(String type) { // 普通方法
this.type = type;
}
public String getType() { // 普通方法
return this.type;
}
}
class DatabaseMessage extends Message { // 类的继承关系
@Override
public String getConnectInfo() { // 方法覆写,定义方法体
return "【" + super.getType() + "】数据库连接信息。";
}
}
public class JavaDemo {
public static void main(String args[]) {
Message msg = new DatabaseMessage() ; // 子类为父类实例化
msg.setType("MLDN") ; // 调用父类继承方法
System.out.println(msg.getConnectInfo()) ; // 调用被覆写的方法
}
}
2.抽象类相关说明
抽象类定义构造方法
abstract class Message { // 定义抽象类
private String type; // 消息类型
// 此时抽象类中没有提供有无参构造方法,所以在子类必须明确调用单参构造
public Message(String type) {
this.type = type ;
}
public abstract String getConnectInfo(); // 抽象方法
// setter、getter略 ...
}
class DatabaseMessage extends Message { // 类的继承关系
public DatabaseMessage(String type) { // 子类构造
super(type); // 调用单参构造
}
@Override
public String getConnectInfo() { // 方法覆写,定义方法体
return "【" + super.getType() + "】数据库连接信息。";
}
}
public class JavaDemo {
public static void main(String args[]) {
Message msg = new DatabaseMessage("MLDN") ; // 子类为父类实例化
System.out.println(msg.getConnectInfo()) ; // 调用被覆写的方法
}
}
抽象类定义static方法
abstract class Message { // 定义抽象类
public abstract String getInfo(); // 抽象方法
public static Message getInstance() { // 返回Message对象实例
return new DatabaseMessage(); // 实例化子类对象
}
}
class DatabaseMessage extends Message { // 类的继承关系
@Override
public String getInfo() { // 方法覆写
return "MLDN数据库连接信息。";
}
}
public class JavaDemo {
public static void main(String args[]) {
Message msg = Message.getInstance(); // 直接调用static方法
System.out.println(msg.getInfo()); // 通过实例化对象调用放哪广发
}
}
3.接口
使用接口
interface IMessage { // 定义接口
public static final String INFO = "www.mldn.cn"; // 全局常量
public abstract String getInfo(); // 抽象方法
}
class MessageImpl implements IMessage { // 实现接口
@Override
public String getInfo() { // 方法覆写
return "魔乐科技软件学院:www.mldn.cn" ; // 获取消息
}
}
public class JavaDemo {
public static void main(String args[]) {
IMessage msg = new MessageImpl() ; // 子类实例化父接口
System.out.println(msg.getInfo()); // 调用方法
}
}
子类实现多个父接口
interface IMessage { // 定义接口
public static final String INFO = "www.mldn.cn"; // 全局常量
public abstract String getInfo(); // 抽象方法
}
class MessageImpl implements IMessage { // 实现接口
@Override
public String getInfo() { // 方法覆写
return "魔乐科技软件学院:www.mldn.cn" ; // 获取消息
}
}
public class JavaDemo {
public static void main(String args[]) {
IMessage msg = new MessageImpl() ; // 子类实例化父接口
System.out.println(msg.getInfo()); // 调用方法
}
}
子类继承抽象类同时实现接口
interface IMessage { // 定义接口
public static final String INFO = "www.mldn.cn"; // 全局常量
public abstract String getInfo(); // 抽象方法
}
interface IChannel { // 定义接口
public abstract boolean connect() ; // 抽象方法
}
abstract class DatabaseAbstract { // 定义一个抽象类
public abstract boolean getDatabaseConnection() ; // abstract关键字不可省略
}
class MessageImpl extends DatabaseAbstract
implements IMessage, IChannel { // 实现多个接口
@Override
public String getInfo() { // 方法覆写
if (this.connect()) { // 连接成功
if (this.getDatabaseConnection()) {
return "【数据库消息】魔乐科技软件学院:www.mldn.cn"; // 获取消息
} else {
return "数据库消息无法访问!" ;
}
}
return "【默认消息】" + IMessage.INFO ; // 获取消息
}
@Override
public boolean connect() { // 覆写接口方法
return true;
}
@Override
public boolean getDatabaseConnection() { // 覆写抽象类方法
return true;
}
}
public class JavaDemo {
public static void main(String args[]) {
IMessage msg = new MessageImpl() ; // 子类实例化父接口
System.out.println(msg.getInfo());
}
}
接口定义加强(在接口中使用default定义普通方法,在接口中定义static方法)
interface IMessage {
public String message(); // 【抽象方法】获取消息内容
public default boolean connect() { // 定义普通方法,该方法可以被子类继承或覆写
System.out.println("建立MLDN订阅消息连接通道。");
return true;
}
}
class MessageImpl implements IMessage { // 实现接口
public String message() { // 覆写抽象方法
return "www.mldn.cn";
}
}
public class JavaDemo {
public static void main(String args[]) {
IMessage msg = new MessageImpl(); // 通过子类实例化接口
if (msg.connect()) { // 接口定义的default方法
System.out.println(msg.message()); // 调用被覆写过的方法
}
}
}
interface IMessage { // 定义接口
public String message() ; // 【抽象方法】获取信息
public default boolean connect() { // 公共方法被所有子类继承
System.out.println("建立MLDN订阅消息连接通道。") ;
return true ;
}
public static IMessage getInstance() { // 定义static方法,可以通过接口名称调用
return new MessageImpl() ; // 获得子类对象
}
}
class MessageImpl implements IMessage { // 定义接口子类
public String message() { // 覆写抽象方法
if (this.connect()) {
return "www.mldn.cn" ;
}
return "没有消息发送。" ;
}
}
public class JavaDemo {
public static void main(String args[]) {
IMessage msg = IMessage.getInstance() ; // 实例化接口子类对象
System.out.println(msg.message()) ; // 调用方法
}
}