一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 598|回复: 10
收起左侧

[CS61B_Spring 2015] Discussion4 - Inheritance

[复制链接] |试试Instant~ |关注本帖
hurricane_e 发表于 2015-6-16 08:33:20 | 显示全部楼层 |阅读模式

[其他]CS61B #14 - 2015-05-25@Berkeley

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
RT~
 楼主| hurricane_e 发表于 2015-6-16 08:34:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

karte_polo 发表于 2015-6-17 11:03:42 | 显示全部楼层
Cat.java
                public class Cat extends Animal {
                        public Cat(String name,int age){
                                super(name,age);
                                this.noise = "Meow!";
                        }
                        public void greet() {
                                System.out.println("Cats " + name + " says: " + makeNoise());
                                }
                }

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

a0106660 发表于 2015-6-17 23:42:44 | 显示全部楼层
Cat.java:
貌似super.noise  和this.noise 都能正常运行。。。差别在哪?还是没差别,这是个问题
public class Cat extends Animal {
        public Cat(String n,int a){
                super(n,a);
                super.noise = "Meow!";
        }

@Override
        public void greet(){
                System.out.println("Cat "+name+" says: " + this.makeNoise());
        }

        public static void main(String[] args){
                Cat mm = new Cat("Smelly",4);
                mm.greet();
        }
}

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

a0106660 发表于 2015-6-18 18:30:44 | 显示全部楼层
a0106660 发表于 2015-6-17 23:42
Cat.java:
貌似super.noise  和this.noise 都能正常运行。。。差别在哪?还是没差别,这是个问题
public  ...

我以为我用super.noise 可能会改变父类的构造时  noise的值,但是并没有。。。这里用super.noise 可以 this.noise 可以, 直接 noise 也可以。 这些犄角旮旯的东西等学更深入一点再说吧
回复 支持 反对

使用道具 举报

西风吹草 发表于 2015-6-23 23:47:35 | 显示全部楼层
本帖最后由 西风吹草 于 2015-6-23 23:55 编辑

public class Cat extends Animal {
        public Cat(String name, int age){
                super(name, age);
                this.noise = "Meow!"'
        }
        
        @Override
        public void greet(){
                System.out.println("Cats" + name + "says:" + makeNoise());
        }
}

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

a0106660 发表于 2015-6-29 14:16:34 | 显示全部楼层
版主怎么好久不更新作业啦??我很想一起交作业的。。。cs61b 2015spring  快没人更了,假如没有一个人带进度的话。。。
回复 支持 反对

使用道具 举报

Howie 发表于 2015-6-29 16:16:58 | 显示全部楼层
a0106660 发表于 2015-6-29 14:16
版主怎么好久不更新作业啦??我很想一起交作业的。。。cs61b 2015spring  快没人更了,假如没有一个人带进 ...

你自己也可以发帖的
回复 支持 反对

使用道具 举报

karte_polo 发表于 2015-7-1 23:40:09 | 显示全部楼层
a0106660 发表于 2015-6-29 14:16
版主怎么好久不更新作业啦??我很想一起交作业的。。。cs61b 2015spring  快没人更了,假如没有一个人带进 ...

可能版主最近很忙吧- -我开了一个新的作业帖,有兴趣的话可以关注一下。后续的我过几天也会发出来的
http://www.1point3acres.com/bbs/thread-137314-1-1.html
回复 支持 反对

使用道具 举报

Casualet 发表于 2015-7-20 21:55:50 | 显示全部楼层
1:
public class Cat extends Animal{

      public Cat(String name, int age){
            super(name,age);// forget about inheriantance priciples for contructors in java again....
            this.noise="Meow!";
      }
      public String makeNoise(){
         if(age<5){
               return noise.toUpperCase();
          }else   
           return this.noise;
      }
      public void greet(){
           super.greet();  
         
      }
}
2:
A
Huh?
B
Meow!
C
WOOF!
D
Meow!
E
Meow!

A dog is an animal, but an animal does not necessarily be a dog.

just write:
d=(Dog)a;
============================
3:
line 19: O, super.y do not exist.
其他的不会了,以后再找。。。。
回复 支持 反对

使用道具 举报

HNAKXR 发表于 2016-2-6 20:14:09 | 显示全部楼层
本帖最后由 HNAKXR 于 2016-2-6 20:43 编辑

1 Creating Cats
Animal Kitty says: MEOW!
Animal Garfield says: Meow!

2 Raining Cats and Dogs
  1. public class TestAnimals {
  2.         public static void main(String[] args) {
  3.                 Animal a = new Animal("Pluto", 10);
  4.                 Cat c = new Cat("Garfield", 6);
  5.                 Dog d = new Dog("Fido", 4);
  6.                 a.greet(); // Animal Pluto says: Huh?
  7.                 c.greet(); // Cat Garfield says: Meow!
  8.                 d.greet(); // Dog Fido says: WOOF!
  9.                 a = c;
  10.                 a.greet(); // Cat Garfield says: Meow!
  11.                 ((Cat) a).greet(); // Cat Garfield says: Meow!

  12.                 /* Compiler error!
  13.                  * because a Dog is an Animal, but an Animal is not necessarily a Dog. */
  14.                 // a = new Dog("Hiernoymus", 10);
  15.                 // d = a;

  16.                 /* We have to make an awkward cast. */
  17.                 a = new Dog("Hiernoymus", 10);
  18.                 d = (Dog) a;
  19.         }
  20. }
复制代码
3 An Exercise in Inheritance Misery
  1. class C extends B {
  2.         public int y = x + 1;
  3.         public void m2() {System.out.println("Cm2-> " + super.x);}
  4.         // public void m3() {System.out.println("Cm3-> " + super.super.x);} // super.super.x is not allowed!
  5.         public void m4() {System.out.println("Cm4-> " + y);}
  6.         // public void m5() {System.out.println("Cm5-> " + super.y);} // there is no variable y in superclass B.
  7. }
复制代码
  1. class D {
  2.         public static void main (String[] args) {
  3.                 // B a0 = new A(); // A can't be converted to B. Must cast if you want.
  4.                 // a0.m1(); // see the line above.
  5.                 A b0 = new B();
  6.                 System.out.println(b0.x);
  7.                 b0.m1(); // class B hides a field in class A.
  8.                 b0.m2(); // you should never hide fields.
  9.                 // b0.m3(); // as you’ll see, it’s confusing! see C.java: super.super.x not allowed!
  10.                 B b1 = new B();
  11.                 b1.m3();
  12.                 b1.m4();
  13.                 A c0 = new C();
  14.                 c0.m1();
  15.                 // C c1 = (A) new C(); // B can't be converted to C. Must cast if you want.
  16.                 A a1 = (A) c0;
  17.                 C c2 = (C) a1;
  18.                 c2.m4();
  19.                 // c2.m5(); // see C.java: there is no variable y in superclass B.
  20.                 // ((C) c0).m3(); // very tricky! see C.java: super.super.x not allowed!
  21.                 // (C) c0.m3(); // same as the line above.
  22.                 b0.update();
  23.                 b0.m1();
  24.                 b0.m2();
  25.         }
  26. }
复制代码
5
Am1-> 5
Bm2-> 10
Bm3-> 5
Bm4-> Am2-> 5
Am1-> 5
Cm4-> 11
Am1-> 99
Bm2-> 10

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-3 03:16

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表