抽象类定义

抽象类定义
       普通类可以直接产生实例化对象,并且在普通类中可以包含构造方法、普通方法、static 方法、常量、变量的内容。而所谓抽象类就是指在普通类的结构里面增加抽象方法的组成部分,抽象方法指的是没有方法体的方法,同时抽象类方法还必须使用abstract关键字定义。拥有抽象方法的类一定属于抽象类,抽象类要使用abstract声明。
定义抽象类:
abstract class A{    //定义一个抽象类,使用abstract声明
    public void fun(){  //普通方法
       System.out.println("存在又方法体的方法");  
//此方法没有方法体的声明,并且存在abstract关键字,表示抽象方法
    public abstract void print();
 }
}
在本程序的类中定义了一个抽象方法print(),既然类中有抽象方法,那么类就必须定义为抽象类,所以使用了“abstract class”来定义。但是一定要记住:抽象类只是比普通类多了抽象方法的定义,其他结构与普通类完全一样。

注意:抽象类不能直接实例化对象

范例:错误的实例化抽象类的操作。
public class TestDemo{
    public static void main(String[] args){
       A a = new a();  //A是抽象的,无法实例化
  }
}

如果要想使用抽象类,必须遵守如下原则。
1.抽象类必须有子类,即每一个抽象类一定要被子类所继承(使用extends关键字),但是在“java”中每一个子类只能够继承一个抽象类,所以具备单继承局限;
2.抽象类的子类(子类不是抽象类)必须覆写抽象类中的全部抽象方法(强制子类覆写);
3.依靠对象的向上转型概念,可以通过抽象类的子类完成抽象类的实例化对象操作。


范例:错误的实例化抽象类的操作。
abstract class A{	//定义一个抽象类,使用abstract声明
		public void fun(){	//普通方法
			System.out.println("存在有方法体的方法!");
	}
	//此方法并没有方法体的声明,并且存在abstract关键字,表示抽象方法
	public abstract void print();
}
//一个子类只能够继承一个抽象类,属于单继承局限
class B extends A{   //B类是抽象类的子类,并且是一个普通类
    public void print(){ //强制要求覆写的方法
       System.out.println("Hello World !");
  }    
}

public class TestDemo{
  public static void main(String[] args){
     A a = new B();  //向上转型
     a.print();          //被子类覆写过的方法
  }
}


本程序为抽象类定义了一个子类B,而子类B(是一个普通类)必须要覆写抽象类中的全部抽象方法,而在主方法中依靠子类对象的向上转型实现了抽象类A对象的实例化操作,而调用的print()方法由于被子类所覆写,所以最终调用的是在子类B中覆写过的print()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值