Java的抽象方法和抽象类实例详解

  

本文实例讲述了Java的抽象方法和抽象类。分享给大家供大家参考,具体如下:

  

  

抽象方法是只有方法签的名,没有方法实现的方法。

  

抽象方法和抽象类必须使用抽象修饰符来定义,有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法。

  

抽象类和抽象方法的规则:

  
      <李>抽象类必须使用抽象修饰符来修饰,抽象方法必须使用抽象修饰符来修饰,抽象方法不能有方法体。   <李>抽象类不定被实例化。即使抽象类里不包含抽象方法,这个抽象类也不能创建实例。   <李>抽象类可以包含成员变量,方法(普通方法和抽象方法),构造器,初始化块,内部类(接口,枚举)5种成分。抽象类的构造器不能用于创建实例,主要用于被其子类调用。   <李>含有抽象方法的类(包括直接定义一个抽象方法;或继承了一个抽象父类,但没有完全实现父类包含的抽象方法;或实现了一个接口,但没有完全实现接口包含的抽象方法三种情况)只能定义为抽象类。   
  

  

1抽象类

        公共抽象类形状   {   {   System.out.println(“执行形状的初始化块…”);   }   私人字符串的颜色;//定义一个计算周长的抽象方法   公共抽象双calPerimeter ();//定义一个返回形状的抽象方法   公共字符串抽象方法();//定义形状的构造器,该构造器并不是用于创建形状对象,//而是用于被子类调用   公共形状(){}   公共形状(字符串的颜色)   {   System.out.println(“执行形状的构造器…”);   这一点。颜色=颜色;   }//省略颜色的setter和getter方法   公共空间改变颜色(String颜色)   {   这一点。颜色=颜色;   }   公共字符串色鬼()   {   返回this.color;   }   }      之前      

2三角形类         公共类三角形形状延伸   {//定义三角形的三边   私人的两倍;   私人双b;   私人双c;   公共三角形(字符串的颜色,一个的两倍   ,双b,双c)   {   超级(颜色);   这一点。setSides (a, b, c);   }   公共空间setSides(双,双b,双c)   {   如果(祝辞=b + c | | b祝辞=a + c | | c祝辞=a + b)   {   System.out.println(“三角形两边之和必须大于第三边”);   返回;   }   这一点。一个=;   这一点。b=b;   这一点。c=c;   }//重写形状类的的计算周长的抽象方法   公共双calPerimeter ()   {   返回一个+ b + c;   }//重写形状类的的返回形状的抽象方法   公共字符串方法()   {   返回“三角形”;   }   }      之前      

3圈类         公共类圆形状   {   私人双半径;   公共圆(字符串的颜色,双半径)   {   超级(颜色);   这一点。半径=半径;   }   公共空间setRadius(双半径)   {   这一点。半径=半径;   }//重写形状类的的计算周长的抽象方法   公共双calPerimeter ()   {   返回2 *数学。π*半径;   }//重写形状类的的返回形状的抽象方法   公共字符串方法()   {   返回色鬼()+“圆形”;   }   公共静态void main (String [] args)   {   s1=new三角形形状(“黑色”,3、4、5);   形状s2=new圆(“黄色”,3);   System.out.println (s1.getType ());   System.out.println (s1.calPerimeter ());   System.out.println (s2.getType ());   System.out.println (s2.calPerimeter ());   }   }      之前      

  
  

执行形状的初始化块……
  执行形状的构造器……
  执行形状的初始化块……
  执行形状的构造器……
  三角形
  12.0
  黄色圆形
  

18.84955592153876      

  

抽象不能用于修饰成员变量,不能用于修饰局部变量,即没有抽象变量,没有抽象成员变量等说法,抽象也不能用于修饰构造器,没有抽象构造器,抽象类里定义的构造器只能是普通构造器。

  

静态和抽象不能同时修饰某个方法,但它们可以同时修饰内部类。

  

抽象的关键字修饰的方法必须被子类重写才有意义,否则这个方法永远不会有方法体,因此抽象方法不能定义为私人访问权限,即私人和抽象不能同时修饰方法。

Java的抽象方法和抽象类实例详解