黑马程序员技术交流社区

标题: 关于继承的问题 [打印本页]

作者: 丁强强    时间: 2013-3-4 19:10
标题: 关于继承的问题
本帖最后由 丁强强 于 2013-3-4 20:14 编辑

父类里面 private 怎么调用
class Demo
private String name;
Demo ( String name)
{
this.name = name;
}
       void Print()
{
        System.out.println(name);
}

class Demo1 extends Demo
{
这里怎么写?
}
class kaishi
{
public static void main (String [] args)
{
        new Demo1("张三").Print();

}

}


作者: 陈圳    时间: 2013-3-4 19:19
class Demo1 extends Demo
{
//这里怎么写?-0-0-你技术分都二十了...这个怎么写都不知道么....
Demo1(String name)
{
super(name);
}
void Print()
{
        System.out.println(this.name);
}
}

作者: 克零岚    时间: 2013-3-4 19:54
本帖最后由 克零岚 于 2013-3-4 19:59 编辑

我不得不说,丁同学这段代码太多错了,好吧,我改好的代码在下边
父类中的属性为私有的,则不能直接调用了,此时只要在父类中写出属性(即name)的public的get和set 方法,
  在子类中便可应用了,下面的例子即如此.

  1. class Demo{
  2. private String name;</p><p> public Demo() {
  3. super();
  4. }
  5. public Demo ( String name)
  6. {
  7. this.name = name;
  8. }
  9. public void setName(String name){        //添加public的get和set方法,在子类中调用getName()方法即可获得父类中private的属性值
  10.          this.name=name;
  11. }
  12. public String getName(){
  13.          return name;
  14. }
  15. public void Print()
  16. {
  17. System.out.println("name的属性值是"+name);
  18. }

  19. static class Demo1 extends Demo
  20. public Demo1(String name2) {

  21. super(name2);    //在这里用super(参数)的方法调用Demo1类的父类Demod带参构造方法,以此能够给name赋值
  22. }

  23.   
  24.   
  25.   
  26. }
  27. static class kaishi
  28. {
  29. public static void main (String [] args)
  30. {
  31.          new Demo1("dd").Print();

  32. }
  33. }
  34. }

复制代码
结果输出为:  name的属性值是:dd


作者: 莫嘉伟    时间: 2013-3-4 20:03
楼主你问的问题有点····那啥,我直接往里面加了个构造器就能运行了·····,这个是必须的子类不会继承父类的构造器,从运行结果来看它该继承了父类的private方法
import java.util.LinkedList;
import java.util.List;


class Demo{
private String name;
Demo ( String name)
{
this.name = name;
}
       void Print()
{
        System.out.println(name);
}
}
class Demo1 extends Demo
{

        Demo1(String name) {
                super(name);
               
        }

}
public class TechnologyPoint
{
public static void main (String [] args)
{
        new Demo1("张三").Print();

}

}

作者: 丁强强    时间: 2013-3-4 20:05
陈圳 发表于 2013-3-4 19:19
class Demo1 extends Demo
{
//这里怎么写?-0-0-你技术分都二十了...这个怎么写都不知道么....

你代码能运行在说。
作者: 丁强强    时间: 2013-3-4 20:13
克零岚 发表于 2013-3-4 19:54
我不得不说,丁同学这段代码太多错了,好吧,我改好的代码在下边
父类中的属性为私有的,则不能直接调用了, ...

谢谢你。
作者: 丁强强    时间: 2013-3-4 20:16
莫嘉伟 发表于 2013-3-4 20:03
楼主你问的问题有点····那啥,我直接往里面加了个构造器就能运行了·····,这个是必须的子类不会继 ...

谢谢,我也郁闷,之前我也是加了构造函数,就是出错,忘记我怎么加的了
作者: 彭波    时间: 2013-3-4 20:19
class Demo
{
private String name;
Demo(String name)
{
  this.name = name;
}
void Print()
{
  System.out.println(name);
}
}
class Demo1 extends Demo
{
Demo1(String name) //方法Print()被继承,可以不要重写了
{
  super(name); //手动通过super语句来指定要访问父类中的构造函数
}

}
class KaiShi //注意规范:类名由多单词组成时,所有单词的首字母大写。当然,你写的不算错
{
public static void main(String[] args)
{
  new Demo1("张三").Print();
}
}

作者: 彭波    时间: 2013-3-4 20:22
我这个可以使用了,你试试




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2