黑马程序员技术交流社区

标题: 哈尔滨校区--技术交流--面向对象试题 [打印本页]

作者: 陈胜    时间: 2016-2-8 17:10
标题: 哈尔滨校区--技术交流--面向对象试题
本帖最后由 陈胜 于 2016-2-19 23:33 编辑

大家新年快乐!!!     与大家分享四道多态方面的试题
1...
class test {
public static void main(String[] args) {
  Fu f = new Zi();  
  Zi z = (Zi)f;  
  f.show();
  z.show();
  System.out.println(f.output);
  System.out.println(z.output);
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public  String output="1";
public void show(){
  output+=3;
}
}
2...
class test {
public static void main(String[] args) {
  Fu f = new Zi();  
  Zi z = (Zi)f;  
  f.show();
  z.show();
  System.out.println(f.output);
  System.out.println(z.output);
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public void show(){
  output+=3;
}
}
3...
class test {
public static void main(String[] args) {
  Fu f = new Zi();  
  Zi z = new Zi();
  f.show();
  z.show();
  System.out.println(f.output);
  System.out.println(z.output);
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public  String output="1";
public void show(){
  output+=3;
}
}
4...
class test {
public static void main(String[] args) {
  Fu f = new Zi();  
  Zi z = new Zi();
  f.show();
  z.show();
  System.out.println(f.output);
  System.out.println(z.output);
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public void show(){
  output+=3;
}
}

作者: 陈胜    时间: 2016-2-8 17:15
同学给出的题   都做出来  多态这也就不糊涂了
作者: renkuo023    时间: 2016-2-8 17:46
不明白啊。Zi z = (Zi)f; 是讲父类转换为为子类?
作者: 洋葱头头    时间: 2016-2-8 18:10
过年人少 谢谢分享
作者: 嘉荫    时间: 2016-2-9 22:37
renkuo023 发表于 2016-2-8 17:46
不明白啊。Zi z = (Zi)f; 是讲父类转换为为子类?

是的,这是向下转型。是对象的转型
作者: 我爱睡觉    时间: 2016-2-9 22:53
我来看看
作者: DDK畅    时间: 2016-2-10 06:53
晕了,虽然刚学完 但是还是不太明白
作者: tujiu888    时间: 2016-2-10 10:15
求详细解答
作者: boboyuwu    时间: 2016-2-10 22:48
1...
class test {
public static void main(String[] args) {
  Fu f = new Zi();                 
  Zi z = (Zi)f;                    
  f.show();                        
  z.show();                        
  System.out.println(f.output);     
  System.out.println(z.output);   
}                                //上面的输出1
}                                //下面的打印出 133
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public  String output="1";
public void show(){
  output+=3;
}
}
2...
class test {
public static void main(String[] args) {
  Fu f = new Zi();  
  Zi z = (Zi)f;  
  f.show();       //output=13
  z.show();         //  output=133
  System.out.println(f.output);    //打印   output=133
  System.out.println(z.output);      //打印output=133
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public void show(){
  output+=3;
}
}
3...
class test {
public static void main(String[] args) {
  Fu f = new Zi();  
  Zi z = new Zi(); 
  f.show();     
  z.show();
  System.out.println(f.output);                   //打印1
  System.out.println(z.output);             //打印13
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public  String output="1";
public void show(){
  output+=3;
}
}
4...
class test {
public static void main(String[] args) {
  Fu f = new Zi();    
  Zi z = new Zi(); 
  f.show();
  z.show();
  System.out.println(f.output);   //打印1
  System.out.println(z.output);   //打印13
}
}
class Fu {
public  String output="1";
public void show(){
  output+=1;
}
}
class Zi extends Fu{
public void show(){
  output+=3;
}
}
作者: youngrivers    时间: 2016-2-11 02:34
new 对象
作者: 苗超维    时间: 2016-2-12 00:25
编译看左边 运行看右边
作者: yuchifeifan    时间: 2016-2-12 01:10
陈胜 发表于 2016-2-8 17:10
大家新年快乐!!!     与大家分享四道多态方面的试题
1...
class test {

我怎么看着这四道题没区别呢
作者: 陈胜    时间: 2016-2-19 23:12
renkuo023 发表于 2016-2-8 17:46
不明白啊。Zi z = (Zi)f; 是讲父类转换为为子类?

1...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = (Zi)f;               
                f.show();//编译看父类,运行看子类,子类output+3变为"13",父类output不变
                z.show();//子类output+3变为"133"  父类output不变
                System.out.println(f.output);1
                System.out.println(z.output);133
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public  String output="1";
        public void show(){
                output+=3;
        }
}

2...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = (Zi)f;               
                f.show();//编译看父类,运行看子类,子类继承父类output,子类调用父类output,output变为"13"
                z.show();//子类调用父类output,output变为"133"   共用父类output
                System.out.println(f.output);133
                System.out.println(z.output);133
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public void show(){
                output+=3;
        }
}

3...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = new Zi();       
                f.show();//编译看父类,运行看子类,父类output不变,子类output变为"13"
                z.show();//z为另一个对象,子类调用父类output,子类output变为"13"
                System.out.println(f.output);1
                System.out.println(z.output);13
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public  String output="1";
        public void show(){
                output+=3;
        }
}

4...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = new Zi();       
                f.show();
                z.show();
                System.out.println(f.output);//编译看父类,运行看子类,子类调用父类output变为"13"
                System.out.println(z.output);//z为另一个对象,子类调用父类output,子类调用output变为"13"
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public void show(){
                output+=3;
        }
}

作者: 陈胜    时间: 2016-2-19 23:14
DDK畅 发表于 2016-2-10 06:53
晕了,虽然刚学完 但是还是不太明白

1...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = (Zi)f;               
                f.show();//编译看父类,运行看子类,子类output+3变为"13",父类output不变
                z.show();//子类output+3变为"133"  父类output不变
                System.out.println(f.output);1
                System.out.println(z.output);133
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public  String output="1";
        public void show(){
                output+=3;
        }
}

2...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = (Zi)f;               
                f.show();//编译看父类,运行看子类,子类继承父类output,子类调用父类output,output变为"13"
                z.show();//子类调用父类output,output变为"133"   共用父类output
                System.out.println(f.output);133
                System.out.println(z.output);133
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public void show(){
                output+=3;
        }
}

3...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = new Zi();       
                f.show();//编译看父类,运行看子类,父类output不变,子类output变为"13"
                z.show();//z为另一个对象,子类调用父类output,子类output变为"13"
                System.out.println(f.output);1
                System.out.println(z.output);13
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public  String output="1";
        public void show(){
                output+=3;
        }
}

4...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = new Zi();       
                f.show();
                z.show();
                System.out.println(f.output);//编译看父类,运行看子类,子类调用父类output变为"13"
                System.out.println(z.output);//z为另一个对象,子类调用父类output,子类调用output变为"13"
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public void show(){
                output+=3;
        }
}

作者: 陈胜    时间: 2016-2-19 23:15
tujiu888 发表于 2016-2-10 10:15
求详细解答

1...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = (Zi)f;               
                f.show();//编译看父类,运行看子类,子类output+3变为"13",父类output不变
                z.show();//子类output+3变为"133"  父类output不变
                System.out.println(f.output);1
                System.out.println(z.output);133
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public  String output="1";
        public void show(){
                output+=3;
        }
}

2...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = (Zi)f;               
                f.show();//编译看父类,运行看子类,子类继承父类output,子类调用父类output,output变为"13"
                z.show();//子类调用父类output,output变为"133"   共用父类output
                System.out.println(f.output);133
                System.out.println(z.output);133
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public void show(){
                output+=3;
        }
}

3...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = new Zi();       
                f.show();//编译看父类,运行看子类,父类output不变,子类output变为"13"
                z.show();//z为另一个对象,子类调用父类output,子类output变为"13"
                System.out.println(f.output);1
                System.out.println(z.output);13
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public  String output="1";
        public void show(){
                output+=3;
        }
}

4...
class test {
        public static void main(String[] args) {
                Fu f = new Zi();               
                Zi z = new Zi();       
                f.show();
                z.show();
                System.out.println(f.output);//编译看父类,运行看子类,子类调用父类output变为"13"
                System.out.println(z.output);//z为另一个对象,子类调用父类output,子类调用output变为"13"
        }
}
class Fu {
        public  String output="1";
        public void show(){
                output+=1;
        }
}
class Zi extends Fu{
        public void show(){
                output+=3;
        }
}

作者: 冷色    时间: 2016-2-19 23:39
谢谢分享
作者: qq358177556    时间: 2016-2-19 23:48
看完两道了,明天再看后两个,感谢分享
作者: 淡如水    时间: 2016-2-20 08:03
关注一下!
作者: 安卓必备    时间: 2016-2-20 08:10
先回复再看的人有木有
作者: TobyoTenma    时间: 2016-2-20 08:55
分行很强大
作者: 三石而立001    时间: 2016-2-20 14:01
谢谢分享!
作者: 苍山雪    时间: 2016-2-20 15:33
谢谢,分享,仔细琢磨下
作者: heimagirls    时间: 2016-2-20 17:12
加些注释就更好了
作者: wusiyi    时间: 2016-2-20 19:15
在类中方法外可以重复赋值吗?
作者: ~sunny    时间: 2016-2-20 20:27
请问这个是需要入基础班考试的题吗
作者: 15856681986    时间: 2016-2-20 21:05
收下了。。。。。。
作者: 黎明就在前方    时间: 2016-2-20 23:22
今天看了2道, 明天起床继续看
作者: 陈胜    时间: 2016-2-22 10:18
~sunny 发表于 2016-2-20 20:27
请问这个是需要入基础班考试的题吗

不是啊   就是平时做的面向对象的题   入学考试的题综合性都比较强
作者: 陈胜    时间: 2016-2-22 10:24
wusiyi 发表于 2016-2-20 19:15
在类中方法外可以重复赋值吗?

是int i;i = 1;这样吗   这不能啊




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