第5章+类的高级特性.pptVIP

  • 2
  • 0
  • 约1.44万字
  • 约 60页
  • 2019-09-06 发布于广东
  • 举报
Java EE基础教程 * * (4) final修饰引用类型变量,针对引用类型变量的final修饰符也是容易混淆的地方。实际上final只是修饰引用变量自身的值,例如限定类变量保存的实例地址不能变。至于该变量所引用的对象,内容是否能变,那就管不着了。所以,对于如下语句: final StringBuffer strConst = new StringBuffer();  可以修改它指向的对象的内容,比如: strConst.append( );   但是不能修改它的值,比如: strConst = null; Java EE基础教程 * * 5.5 抽象类与接口 返回 5.5.1抽象类 用关键字abstract修饰的类称为抽象类。同样,用abstract 关键字来修饰一个方法时,这个方法就叫做抽象方法。如: abstract class abstractClass{ …} //抽象类 abstract returnType abstractMethod([paramlist]) //抽象方法 abstract类与final类正好相反,是指不能直接被实例化的类,必须由子类创建对象。抽象类一般作为其它类的超类,抽象类中的抽象方法只需声明,由继承类提供实现。 抽象类必须被继承,抽象方法必须被重写。一个 abstract 类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现。若类中包含了抽象方法,则该类必须被定义为抽象类。如果一个类是一个 abstract类的子类,它必须具体实现父类的abstract 方法。abstract 类也可以没有 abstract方法。下面是抽象类必须被继承的例子。 Java EE基础教程 * * 例5-7定义了一个抽象类C ,其中声明一个抽象方法callme( ),再定义它的子类D ,并重载方法callme( )。对抽象类进行测试。 程序清单:ch05\TestAbstract.java package ch05; abstract class C{ abstract void callme(); void metoo(){ System.out.println(Inside Cs metoo() method); } } class D extends C{ void callme(){ System.out.println(Inside Ds callme() method); } } Java EE基础教程 * * public class TestAbstract{ public static void main(String[] args){ C c = new D(); c.callme(); c.metoo(); } } Java EE基础教程 * * 例5-8 在下面的例中,有一个abstract的“图形”类,图形类要求其子类都必须有具体计算面积的功能。 程序清单:ch05\ShapeArea.java package ch05; abstract class 图形{ public abstract double 求面积(); } class 梯形 extends 图形{ double a,b,h; 梯形(double a,double b,double h){ this.a=a;this.b=b;this.h=h; } public double 求面积(){ return((1/2.0)*(a+b)*h); } } Java EE基础教程 * * class 圆形 extends 图形{ double r; 圆形(double r){ this.r=r; } public double 求面积(){ return(3.14*r*r); } } class 堆{ 图形 底; double 高; 堆(图形 底,double 高){ this.底=底; this.高=高; } Java EE基础教程 * * void 换底(图形 底){ this.底=底; } public double 求体积(){ return (底.求面积()*高)/3.0; } } public class ShapeArea { public static void main

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档