java这个程序为什么会等于0class B {private int num = 10;public void draw(){System.out.println("B.draw(),num"+num);}public B(){System.out.println("B constructor");draw();}}class A extends B{/*** @param args*/private int num = 1;public void dr

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 15:48:53
java这个程序为什么会等于0class B {private int num = 10;public void draw(){System.out.println(

java这个程序为什么会等于0class B {private int num = 10;public void draw(){System.out.println("B.draw(),num"+num);}public B(){System.out.println("B constructor");draw();}}class A extends B{/*** @param args*/private int num = 1;public void dr
java这个程序为什么会等于0
class B {
private int num = 10;
public void draw()
{
System.out.println("B.draw(),num"+num);
}
public B()
{
System.out.println("B constructor");
draw();
}
}
class A extends B{
/**
* @param args
*/
private int num = 1;
public void draw()
{
System.out.println("A.draw(),num="+num);
}
public A(int num)
{
this.num = num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A(5);
}
}
结果为什么会等于0

java这个程序为什么会等于0class B {private int num = 10;public void draw(){System.out.println("B.draw(),num"+num);}public B(){System.out.println("B constructor");draw();}}class A extends B{/*** @param args*/private int num = 1;public void dr
首先,等于0是对的:
仔细看下过程:A继承了B,A也覆盖了B的draw()方法.
根据java继承原理,A a = new A(5);
new出一个对象A,那么由于A继承了B,所以先要去B执行其B的构造:
public B()
{
System.out.println("B constructor");
draw();
}
控制台首先喷出“B constructor”.
当继续执行 draw();方法时,发现已经被子类A覆盖了,所以转入子类A的方法draw();
这时由于A里定义的是private int num = 1; 私有变量,而B中的也是私有变量private int num = 10;
所以可以说这两个名字同为num的变量是不相干的.
这样就可以理解了:
一开始子类A中的num就没有被初始化,而先执行了A中的draw方法.
所以只是输出的就是num=0(java中默认没有初始化的int值为0);
但是随后B的构造方法执行完以后将会继续执行A的构造.
这时A中的num将会被赋值为5!
你可以在A的构造中加一个输出验证下:
public A(int num)
{
this.num2 = num;
System.out.println("num="+num);
}
输出一定时num=5;
这么写你是否能理解.

java这个程序为什么会等于0class B {private int num = 10;public void draw(){System.out.println(B.draw(),num+num);}public B(){System.out.println(B constructor);draw();}}class A extends B{/*** @param args*/private int num = 1;public void dr 这个Java程序,month为什么要减1呢?import java.util.*;public class PersonClass{ private int No; private String name; private boolean sex; private Date birthday; public PersonClass(){} public PersonClass(int No,String name,boo 这个画星星的java程序,为什么每次只显示一个星星?为什么运行的时候,每次都只显示一个 * MyPanel中的for循环不是应该显示300个 * import java.awt.*;import java.util.*;public class Stars {public static void main(St java小问题,计算n!的程序问题:为什么我的程序从0!到20!计算的和计算器一样,而从21!开始计算结果是负数了?import java.util.*;import java.util.Scanner;public class Factorial { public static void main(String[] args) { S 初学java,写了一个链接Oracle的小程序,运行后报错:java.sql.SQLException:无效的列索引请问这是为什么?附上程序:package connection;import java.sql.*;public class Connectionb { public static final void main(String args[] import java.awt.*; import java.awt.event.*; import javax.swing.*;为什么写JAVA程序总是要写上这些东西?可以不写上吗?不写上会怎样? JAVA中错误:类X是公共的,应在名为X.JAVA的文件中声明public class X extends JFrame { 为什么会这样?就像这个编程:import javax.swing.*;import java.awt.*;public class MyFrame extends JFrame {JTextField txfResult = new JTextF 麻烦高手帮我改一下这个程序import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class ccc extends JFrame implements ActionListener {JPanel n1;JButton n2;JButton n3;JButton n4 有没有哪个好心人可以帮我运行一下这个JAVA程序?告诉我运行的结果是什么样.import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;public class GRIDRAWING{public static void main(String ar JAVA为什么下面这个程序能判断X是技术还是偶数?public class Var_01 { public static void main(String args[]){ int x = 45;if(x/2==0){System.out.println(x为偶数);}else{System.out.println(x是奇数);}}}X/2==0怎么能判定呢?及 为什么这个极限会等于0呢? 为什么这个程序会出错?这个错误的原因是什么? 用JAVA编写程序,计算下面数列的和: 1/3+3/5+5/7+…+95/97+97/99大家看看我的程序哪里出错了,为什么得出sum=0? public class plus { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated metho java烟花程序看不懂,初学java希望每句给出解释import java.awt.*;import java.applet.*;import java.awt.event.*;import javax.swing.*;public class Fireworks extends Applet implements MouseListener,Runnable{int x,y;int top,point;public void JAVA程序求一元二次方程根拜托各位了 3Q我这自己编写了一个程序求一元二次方程的根,S=0,S0时不能正常输出结果,import java.util.Scanner; import java.lang.Math; public class shiyan { /** * @param args */ public stat JAVA程序填空题, java sleep()用法求sleep()用法,这里有这个程序;import java.awt.*;import java.awt.event.*;public class xiancheng extends Thread{char c;public xiancheng (String name,char c){super(name);this.c=c;}public void run(){int k;char ch=c;System.out 编写一程序,求出所有水仙花数.(水仙花数是指个位,十位和百位三个数的立方和等于这个三位数本身)用JAVA编程