抽象类的相关说明

抽象类的相关说明

抽象类是一个重要的面向对象设计的结构,对于抽象类使用的时候需要注意一几点问题:

  1. 在定义抽象类的时候绝对不能够使用final关键字进行定义,因为抽象类必须有子类,而final定义的类是不能够有子类的。

范例:

 final abstract class test //矛盾组合
{

} 

结果:
在这里插入图片描述
2. 抽象类是作为一个普通类的加强版出现的(抽象类的组成就是在普通类的基础上扩展而来的,只是追加了抽象方法),既然是在普通类的基础上扩展的,那么普通类之中就可以定义属性和方法,那么这些属性一定是要求进行内存空间开辟的,所以抽象类一定可以提供构造方法,并且子类也一定会按照子类对象的实例化原则进行构造调用。
范例:抽象类创建构造方法

abstract class Message{//定义抽象类
	private String type;//消息类型

	public Message(String type){//有参构造
		this.type = type;
	}
	public abstract String getConnextInfo();//抽象方法 
	public String getType(){//普通方法
		return this.type;
	}
}

子类:

class DatabaseMessage extends Message
{
	public DatabaseMessage(String type){
		super(type);//调用父类构造
	}
	public String getConnextInfo(){
		return "数据库连接信息";
	}
}

主方法:

class  JavaDemo
{
	public static void main(String[] args) 
	{
		Message msg = new DatabaseMessage("客户信息"); //向上转型
		//调用普通方法
		System.out.println(msg.getType());
	}
}

结果:

在这里插入图片描述

  1. 抽象类中允许没有抽象方法,但是即便没有抽象方法,也无法直接使用关键字new直接实例化抽象类对象。
    范例:
class  JavaDemo
{
	public static void main(String[] args) 
	{
		Message msg = new Message("客户信息"); 

	}
}

abstract class Message{//定义抽象类

}


结果:
在这里插入图片描述
即便抽象类没有实例化对象,也无法直接使用关键字new获取抽象类的对象,必须依靠子类对象完成。

  1. 抽象类中可以提供有static方法,并且该方法不受到抽象类对象的局限。
    范例:
    抽象类:
abstract class Message{//定义抽象类
	public abstract String getInfo();//抽象方法
	public static Message getInstance(){//静态方法,不受类实例化限制
		return new DatabaseMessage();
	}
}

子类:

class DatabaseMessage extends Message
{
	public String getInfo(){
		return "数据库连接信息";
	}
}

主方法:

class  JavaDemo
{
	public static void main(String[] args) 
	{
		Message msg = Message.getInstance();
		System.out.println(msg.getInfo());

	}
}

结果:
在这里插入图片描述
static方法永远不受到实例化对象或结构的限制,永远可以直接通过名称进行调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值