当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

java类承当的语法[Java编程]

赞助商链接



  本文“java类承当的语法[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
担当与Java(以及其他OOP语言)非常精密地结合在一同.我们早在第1章就为大家引入了担当的概念,并在那章之后到本章之前的各章里不时用到,因为一些特别的场所要求必须利用担当.除此以外,成立一个类时必定会举行担当,因为若非如此,会从Java的尺度根类Object中担当.
用于合成的语法是非常简单且直观的.但为了举行担当,必须采取一种全然差别的情势.需求担当的时刻,我们会说:“这个新类和那个旧类差不多.”为了在代码里表面这一见解,需求给出类名.但在类主体的起始花括号之前,需求安排一个关键字extends,在背面跟随“底子类”的名字.若采纳这种做法,便可自动得到底子类的全部数据成员以及办法.下面是一个例子:

//: Detergent.java
// Inheritance syntax & properties

class Cleanser {
  private String s = new String("Cleanser");
  public void append(String a) { s += a; }
  public void dilute() { append(" dilute()"); }
  public void apply() { append(" apply()"); }
  public void scrub() { append(" scrub()"); }
  public void print() { System.out.println(s); }
  public static void main(String[] args) {
    Cleanser x = new Cleanser();
    x.dilute(); x.apply(); x.scrub();
    x.print();
  }
}

public class Detergent extends Cleanser {
  // Change a method:
  public void scrub() {
    append(" Detergent.scrub()");
    super.scrub(); // Call base-class version
  }
  // Add methods to the interface:
  public void foam() { append(" foam()"); }
  // Test the new class:
  public static void main(String[] args) {
    Detergent x = new Detergent();
    x.dilute();
    x.apply();
    x.scrub();
    x.foam();
    x.print();
    System.out.println("Testing base class:");
    Cleanser.main(args);
  }
} ///:~
这个例子向大家展示了大量特点.首先,在Cleanser append()办法里,字串同一个s衔接起来.这是用“+=”运算符实现的.同“+”一样,“+=”被Java用于对字串举行“过载”处理.
其次,无论Cleanser还是Detergent都包含了一个main()办法.我们可为自己的每个类都成立一个main().普通倡议大家象这样举行编写代码,使自己的测试代码可以封装到类内.即便在程序中含有数目众多的类,但关于在号令行恳求的public类,只有main()才会得到调用.所以在这种情形下,当我们利用“java Detergent”的时刻,调用的是Degergent.main()——即便Cleanser并非一个public类.采取这种将main()置入每个类的做法,可便利地为每个类都举行单元测试.并且在完成测试今后,毋需将main()删去;可把它保存下来,用于今后的测试.
在这里,大家可看到Deteregent.main()对Cleanser.main()的调用是明确举行的.
需求侧重夸大的是Cleanser中的全部类都是public属性.请记着,假使省略全部拜候指导符,则成员默许为“友好的”.这样一来,就只答应对包成员举行拜候.在这个包内,任何人都可以利用那些没有拜候指导符的办法.比方,Detergent将不会碰到任何麻烦.但是,假定来自别的某个包的类预备担当Cleanser,它就只能拜候那些public成员.所以在筹划担当的时刻,一个对比好的法则是将全部字段都设为private,并将全部办法都设为public(protected成员也答应衍生出来的类拜候它;今后还会深化探究这一问题).当然,在一些特别的场所,我们仍旧必须作出一些调整,但这并非一个好的做法.
注意Cleanser在它的接口中含有一系列办法:append(),dilute(),apply(),scrub()以及print().由于Detergent是从Cleanser衍生出来的(通过extends关键字),所以它会自动得到接口内的全部这些办法——即便我们在Detergent里并未看到对它们的明肯定义.这样一来,便可将担当想象成“对接口的反复操纵”大概“接口的再生”(今后的实施细节可以安闲设置,但那并非我们夸大的重点).
正如在scrub()里看到的那样,可以得到在底子类里定义的一个办法,并对其举行改正.在这种情形下,我们普通想在新版本里调用来自底子类的办法.但在scrub()里,不可只是简单地发出对scrub()的调用.那样便造成了递归调用,我们不肯看到这一情形.为办理这个问题,Java供应了一个super关键字,它引用当前类已从中担当的一个“超类”(Superclass).所以表达式super.scrub()调用的是办法scrub()的底子类版本.
举行担当时,我们并不限于只能利用底子类的办法.亦可在衍生出来的类里加入自己的新办法.这时采纳的做法与在普通类里增添其他任何办法是完好一样的:只需简单地定义它便可.extends关键字提醒我们预备将新办法加入底子类的接口里,对其举行“扩大”.foam()就是这种做法的一个产物.
在Detergent.main()里,我们可看到关于Detergent对象,可调用Cleanser以及Detergent内全部可用的办法(如foam()).
  以上是“java类承当的语法[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .