为什么Sub BordersB()
Application.ScreenUpdating = False
Dim lngLstCol As Long, lngLstRow As Long
lngLstRow = ActiveSheet.UsedRange.Rows.Count
lngLstCol = ActiveSheet.UsedRange.Columns.Count
With Range(Range("B7"), Cells(lngLstRow, 2)).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Range(Range("B7"), Cells(7, lngLstCol)).Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Range(Cells(7, lngLstCol), Cells(lngLstRow, lngLstCol)).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Range(Cells(lngLstRow, 2), Cells(lngLstRow, lngLstCol)).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Application.ScreenUpdating = True
End Sub
会打印以下内容:
System.out.println(b.h + " " + b.getH());
我期待它打印出这样的东西:
Beta 44 <br/>
4 44 (notice this is in the second line)
我认为以这种方式打印的原因是因为我们首先调用4 Beta 44 44 (this one is in one line)
这是4.然后我们调用b.h
来打印Beta 44 44
以下是代码:
b.getH()
答案 0 :(得分:2)
输出是因为var
内的表达式首先计算然后打印。
所以订单是
System.out.println(b.h + " " + b.getH());
所以完整的o / p是
System.out.println(b.h + " " + b.getH()); // calls getH() method
System.out.println("Beta " + h); //print Beta 44
System.out.println(b.h + " " + b.getH()); //prints 4 44
Beta 44
4 44
为b.h
,因为变量未被引入,因此它通过引用调用4
类h
变量。
Baap
为您提供从b.getH()
类方法返回的44
值(在Beta类中h = 44)。
答案 1 :(得分:1)
首先,对getH()
的调用打印“Beta 44”,因为在调用System.out.println(b.h + " " + b.getH())
之前评估println
的参数。
然后System.out.println(b.h + " " + b.getH())
打印“4 44”。
b.h
返回4
因为没有覆盖实例变量,并且由于b
的编译时类型为Baap
,b.h
会返回实例超类的变量。
b.getH()
会返回44
,因为b
的运行时类型为Beta,会覆盖getH()
。
答案 2 :(得分:1)
System.out.println(b.h +&#34;&#34; + b.getH());
按以下顺序执行:
String temp1 = b.h
String temp2 = temp1 + " "
String temp3 = b.getH () // prints Beta 44
String temp4 = temp2 + temp3
System.out.println (temp4) // prints 4 44
答案 3 :(得分:1)
输出
Beta 44
4 44
要评估表达式System.out.println(b.h + " " + b.getH());
方法b.getH()
需要首先进行评估。由于对象实际上是类Beta
,您在第1行中看到Beta 44
打印[由于您使用的是println
方法,因此最后会有一个新的行符号],该方法返回44 。
然后它就像System.out.println(b.h + " " + 44);
现在,因为您只是直接使用类型为Baap
的引用引用变量,您将获得4 [记住变量不会被覆盖,它们只是被遮蔽]。因此第二行4 44
答案 4 :(得分:1)
它首先在println()语句中计算表达式,因为Beta44首先打印出来。然后它从println语句开始从左到右打印值,然后打印4,44。它打印4因为实例变量是Baap类型(编译时)。因此,它选择Baap类中定义的变量值。 如果父类和子类中都存在相同的方法,则仅从子类调用重写的方法。但是,变量和静态字段是从实例变量类型调用的,在这种情况下是Baap。
希望它会有所帮助。
答案 5 :(得分:0)
它给出了绝对正确的答案
Beta 44
4 44
此声明:System.out.println(b.h + " " + b.getH());
由于程序计数器或编译器从右到左检查了一个语句,并且在println()方法中,programm计数器首先识别出并且弄明了方法的参数,因为它先行b.getH()
所以"Beat 44"
是答案的第一部分,之后它会为println()
获取一个新行,最后它会打印b.h
值(4),然后返回{{1}的值这是44。
答案 6 :(得分:0)
这是因为使用了相同的重写方法。当使用重写方法时,该类将优先使用自己的方法而不是父类的方法。