首页 > 试题广场 >

写出以下程序的运行结果,填写在每个输出语句后面的注释中。

[填空题]

写出以下程序的运行结果,填写在每个输出语句后面的注释中。

public class ATest{

public static void main(String args[]) {

Sub   sub = new Sub( );

System. out .println(sub. x );              //1

System. out .println(sub. n );              //2

System. out .println(sub.method1( ));    //3

System. out .println(sub.method2( ));    //4

Super supsub= new Sub( );

System. out .println(supsub. x );          //5

System. out .println(supsub. n );          //6

System. out .println(supsub.method1( ));//7

System. out .println(supsub.method2( ));//8

Super sup= new Super( );

System. out .println(sup. x );             //9

System. out .println(sup. n );             //10

System. out .println(sup.method1( ));   //11

System. out .println(sup.method2( ));   //12

}

}

class Super{

int x =1 , y =2 ;

static int n =50;

int method1( ){

return ( x < y )? x : y ;

}

static int method2( ){

return n ++;

}

}

class Sub extends Super{

int method1( ) {

return ( x > y )? x : y ;

}

static int method2( ){

return n --;

}

}

对于Super supsub=   new  Sub( )的访问特点:成员变量是编译看左,运行看左,所以用的是父类的成员变量;成员方法是编译看左,运行看右,运行的是子类的方法;静态方法同成员变量,编译看左运行看左
发表于 2017-05-18 21:26:01 回复(2)
有多少人和我一样,这种题直接屏蔽了,不是不会做,实在是不想做啊。o(>﹏<)o
发表于 2017-05-31 11:06:33 回复(1)
静态方法的调用是不具有多态性的,声明的类型是哪个类,就调用那个类的方法
发表于 2017-05-17 15:14:12 回复(2)
题是个好题   但是标准答案这样写就过分了啊

编辑于 2017-05-15 16:10:21 回复(2)
Super supsub= new Sub( );调用的method都是Super类的
发表于 2017-05-16 23:24:31 回复(0)
第10和第12 n是静态变量 只加载一次 new了新对象之后值应该是之前执行过后的值 应该是48 而不是重新回到50吧 另外一道题和这个的说法答案就不一样https://www.nowcoder.com/questionTerminal/12001e7****94fcdbcac429e50672f51
发表于 2017-07-07 11:22:48 回复(1)
① return n--; 先返回n的值,n再减1 ② 静态方法不支持多态性,用那种类型声明,调用方法时就是哪种类型的方法,eg:父类变量指向子类对象时,父类变量调用的静态方法是其本身的静态方法
加载子类之前先加载父类。
Sub   sub =  new  Sub( ); 直接调用子类
Super supsub=   new  Sub( ); 调用静态方法时则调用申明类型,父类。上面一步父类的n已经变成了49
Super supsub=   new  Super( ); 新对象,重新初始化n=50

发表于 2017-06-30 09:54:43 回复(1)
这道题考的是多态,重写的方法是跟实例类型相关。而静态方法是不能被覆盖的,所以跟声明类型有关。
发表于 2017-06-12 09:56:19 回复(0)
Sub类中的x、y、n属性都是从Super类继承而来,其中属性n比较特殊,是类成员变量,并且是Super类的成员变量,不是Sub类的成员变量。因此对n的修改会影响到所有的Super类、Sub类
发表于 2017-06-11 22:41:47 回复(0)
对于Super supsub=   new  Sub( )的访问特点:成员变量是编译看左,运行看左,所以用的是父类的成员变量;成员方法是编译看左,运行看右,运行的是子类的方法;静态方法同成员变量,编译看左运行看左
发表于 2017-05-24 12:58:48 回复(0)
① return n--; 先返回n的值,n再减1 ② 静态方法不支持多态性,用那种类型声明,调用方法时就是哪种类型的方法,eg:父类变量指向子类对象时,父类变量调用的静态方法是其本身的静态方法
编辑于 2017-05-23 02:15:29 回复(0)
为啥最后的有两个是输出50啊
发表于 2017-05-22 22:11:23 回复(0)
不懂第7行为何输出2?
发表于 2017-05-16 22:00:13 回复(2)
<img src="https://uploadfiles.nowcoder.com/images/20170515/531527_1494855275409_D7ED075C363427B1FA8F96FCE8534E5C" alt="" />这个答案过分了啊,好不容易分析的全对
发表于 2017-05-15 21:34:37 回复(0)