网站大量收购独家精品文档,联系QQ:2885784924

抽象类及接口.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
final和abstract修饰符 1 final修饰符 使用final修饰符可以修饰类的成员变量、类的成员方法和类。前面我们知道,用final修饰成员变量或局部变量,则该变量为常值变量(常量),一旦赋值便不能改变,一般与static组合定义类常量。 也可以用final修饰成员方法。如果一个方法使用final修饰,则该方法不能在子类中被覆盖。例如下面的代码会发生编译错误: class A{ final void method(){} } class B extends A{ void method(){} } final关键字还可以修饰一个类。如果一个类使用final修饰,则该类就为最终类(final class),最终类是不能被继承的类。 定义final类的格式为: final class ClassName{ //… } 下面代码会发生编译错误: final class A{ //… } class B extends A{ //… } 有时为了安全的考虑,防止类被继承,可以在类的定义时使用final修饰符。在Java的类库中就有一些类声明为final类,如Math类和String类都是final类,它们都不能被继承。 声明为final的类隐含声明了其中的方法都为final方法。 2 abstract修饰符 在继承的层次结构中,随着一个个新子类的出现,类变得越来越专门、越具体。如果从一个子类上溯到父类,类就变得更一般、更通用。类的设计应该保证父类和子类能够共享特征。有时将一个类的设计得非常抽象,以至于它没有具体的实例。 前面我们定义了圆的类,假设我们还要设计一个矩形(Rectangle)类和三角形(Triangle)类,这些类也需要定义求周长和面积的方法。 它们具有共同的特征和行为。这时我们就可以设计一个更一般的类,比如几何形状(GeometricShape)类,来模拟圆、矩形、三角形等。在该类中定义那些求周长和面积的方法,然后在定义具体形状的类时继承该类并覆盖其中的方法。 由于几何形状不能有一个具体的对象,因此方法的实现需要依赖于具体的形状,这些方法就不能实现,因此要定义为抽象的方法(abstract method)。抽象方法是只有方法的声明,没有方法的实现,定义抽象方法需要在方法前加上abstract修饰符。 包含抽象方法的类应该定义为抽象类(abstract class),定义抽象类需要的类前加上abstract修饰符。 下面定义的GeometricShape类即为抽象类,其中定义了两个抽象方法。 程序GeometricShape.java public abstract class GeometricShape{ public int color; public String name; public GeometricShape(){ color = 0; name = shape; } public GeometricShape(int color,String name){ this.color = color; this.name = name; } public void setColor(int color){ this.color = color; } public int getColor(){ return color; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public abstract double circum(); public abstract double area(); } _____________________________________________________________________________▃ 抽象类不能被实例化,即不能生成抽象类的对象,如下列语句将会产生编译错误: GeometricShape gs=new GeometricShape(); 可以创建抽象类的子类,抽象类的子类还可以是抽象类。只有非抽象的子类才能使用new创建该类的对象。在抽象类中可以定义构造方法,这些构造方法可以在子类的构造方法中调用。在抽象类中可以定义非抽象的方法。 抽象方法的作用是为所有子类提供一个统一的接口。对抽象方法只需声明,不需实现,即在声明后用一个分号(;)结束,而不需要用大括号,例如上面类定义的最后两行就声明了两个抽象方法。 抽象类中可以没有抽象方法,但仍然需要被

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档