我对在继承中使用私有方法感到困惑,例如:
public class A {
private void say(int number){
System.out.print("A:"+number);
}
}
public class B extends A{
public void say(int number){
System.out.print("Over:"+number);
}
}
public class Tester {
public static void main(String[] args) {
A a=new B();
a.say(12);
}
}
Run Code Online (Sandbox Code Playgroud)
基于上面的代码,我感到困惑的私有方法的继承,是继承了私有方法class A来B?或者两个类中的say方法完全不相关?由于代码有当它在main()方法运行错误,好像class B不能调用从私有方法class A.
我对如何在Java中使用构造函数和setter感到困惑,请参阅下面的示例代码:
public class Name {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
public static void main(String[] args) {
Name a=new Name();
a.setName("123");
System.out.println(a.getName());
}
Run Code Online (Sandbox Code Playgroud)
它打印出123,它使用没有构造函数的setter方法,我还编写了下面的其他代码:
public class Name {
private String name;
public Name(String nm){
name=nm;
}
public String getName(){
return name;
}
}
public static void main(String[] args) {
Name a=new Name("123");
System.out.println(a.getName());
}
Run Code Online (Sandbox Code Playgroud)
这个也打印出123,它是使用没有setter方法的构造函数,这就是为什么我不明白构造函数和setter之间使用的区别,请指教,欢呼!
public class Tester {
public Tester(){
System.out.println("Hello");
}
public Tester(byte b){
System.out.println("byte");
}
public Tester(int i){
System.out.println("int");
}
public static void main(String[] args) {
Tester test=new Tester(12);
}
}
Run Code Online (Sandbox Code Playgroud)
请告知为什么打印是int,我也尝试过其他整数,它们都打印为int,但是例如,1 2 3 4 5 6 7 ....这些数字也可以称为byte,对吧?那么为什么只调用int?