当前位置:  技术问答>java相关

《thinking in java》一个有关继承的程序不明白,请讲一讲,谢谢

    来源: 互联网  发布时间:2015-03-16

    本文导语:  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() { a...

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 dilute() apply() Detergent.scrub() scrub() foam()
Testing base class:
Cleanser dilute() apply() scrub()
我认为Cleaner的成员变量s为私有,Detergent 无法继承,所以Detergent.main()
中的x.print();的结果为null dilute() apply() Detergent.scrub() scrub() foam()
还请各位给讲一讲。多谢多谢

|
private String s; 无法继承没错,而这个s是存在的。 detergent并没有直接访问s,
而是通过public的方法来访问s, 所以执行结果使没问题的

|
同意zych72(闹闹):

其实大家应该看看encapsulotion的定义:

hide some attribute of a class and provide some public interface to access them.

所以s虽然是private,但是访问方法是public,所以仍然可以访问阿

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 早上看到China-Pub已经有<Thinking In C++>英文第2版卖了,而且<Thinking In Java 2E>也在预告了,强烈期待中......
  • 哪里还有Think in java!答者给分,谢谢
  • Think in Java
  • 高分征集Think in java(第2版)中文电子版
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • Think in java 源码
  • 从哪能下载Thinking in java 一书中的程序代码?
  • 请问《Think in Java》的作者的网站网址是多少?
  • 考SCJP275一定要看<Thinking In Java>吗?
  • 请问哪里可以下载thinking in java 中的源代码?
  • Thinking In Java 的第一个程序问题
  • THINK IN JAVA版本问题!
  • thinking in java 中提到的一本书
  • 急需《thinking in java》电子书!!!
  • 什么地方有 Think in java 的代码下载(50分)在线等候!!!
  • 新手求助!!哪里有《THINK IN JAVA》免费下载?
  • 《think in java》出第三版了!!!!
  • think in java书店有卖吗?
  • 有人能提供THINK IN JAVA 第二版的简体中文下载吗?
  • 关于Think in Java一书


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    THINK IN JAVA版本问题! iis7站长之家