package P78.EX16;class MyRectangle 
{
private int Length,Width;
void setLength(int Length)
{
this.Length=Length;
}
void setWidth(int Width)
{
this.Width=Width;

}
int getWidth()
{
return Width;
}
int getLength()
{
return Length;
}
int getArea()
{
return Length*Width;
}
String tostring()
{
    

//String s=String.format("%d,%d",Length,Width);
//return s;这两种都可以实现 格式。
String s=Width+","+Length;
return s;
}
}
package P78.EX16;class MySquare extends MyRectangle
{
private int Length;

int getArea()
{
return Length*Length;
}
String tostring()
{
String s=String.format("%d", Length);
return s;
}}
package P78.EX16;public class Mainclass 
{
public static void main(String args[])
{
MyRectangle a=new MyRectangle();
a.setLength(3);
a.setWidth(2);
System.out.println(a.tostring());
System.out.println(a.getArea());
MyRectangle b=new MySquare();
b.setLength(8);
System.out.println(b.tostring());
System.out.println(b.getArea());
}}
为什么 调用不了子类啊??? 程序运行后 子类那得东西都是0.

解决方案 »

  1.   

    MyRectangle b=new MySquare();
    b.setLength(8);
    这里的setLength设置的是父类里的length
    子类必须重写setLength方法才可以class MySquare extends MyRectangle
    {
        private int Length;
        void setLength(int Length)
        {
            this.Length=Length;
        }
        int getArea()
        {
            return Length*Length;
        }
        String tostring()
        {
            String s=String.format("%d", Length);
            return s;
        }}
      

  2.   

    为什么不给正方形矩形类类设置一个构造方法
    不然默认的构造方法会给所有域自动赋上初值
    而且正方形类不用再另外覆盖那个域,直接用length不就可以了么
      

  3.   

    不要从矩形派生正方形大忌。
    http://www.cnblogs.com/healerkx/articles/1237412.html
      

  4.   

    一楼的  这样不行啊
     this.Length=Length; 这条代码他提示我 对Length赋值不能生效??
    这是怎么会是?
      

  5.   

    啊。老师留的思考题,实质上,还没讲继承那,我提前看的书,但是书上不是用SET 和GET 函数做的。。 这叫我很郁闷 老师叫我们用SET 和GET函数做
      

  6.   

       MyRectangle b=new MySquare();
       b.setLength(8);
    在MySquare里没有重写MyRectangle的setLength是不是哪里培训的课外作业?课程讲得这么快。
      

  7.   

    楼主要是想学JAVA,看本叫CORE JAVA的书吧,不难,规范,学校的书学不到东西的,还有些过时,经验之谈哦!
      

  8.   

    9楼的, 不是培训 我自己小看了下书 不过 后来我补上了 setLength函数 也是不行
    他告诉我 this.Length=Length 赋值不能生效 这个是怎么会是 。
    还有10楼的 我会考虑你推荐的那本书的,现在是个大学老师就出本书,也不知道谁写的好还不过时。
    我感觉,代码淘汰的也太快了 郁闷 
      

  9.   


    怎么无效? 可以自动生成get set  也无效?
    代码上单击右键,进入source,选择其中的generate  setter  and  getter
      

  10.   

    感谢 1楼那大哥 我从新粘贴你的 代码 他就对了 自己手打的就不对 郁闷 不过确实的重新用写 setLength函数。谢谢了,结贴了。