publicclass Test {
publicstaticvoidmain(String[] args) {
B b = new B();
C c = new C();
//==比的是对象的地址,判断是否是引用的同一个对象
System.out.println(b.getA() == c.getA());//false
b.setA(new A("a1"));
c.setA(new A("a2"));
System.out.println(b.getA() == c.getA());//false//将c中te指向b中te指向的对象,此时他们都指向统一个对象//任何一个对te里面的变量进行修改,另一个也影响了,因为他们操作的是同一个对象。
c.setA(b.getA());
System.out.println(b.getA() == c.getA());//true
}
}
class A{
private String name;
publicA(String name){
this.name = name;
}
publicvoidahowName(){
System.out.println("此A对象是"+name);
}
}
class B{
private A te;
publicB(){
te = new A("");
}
publicvoidsetA(A te){
this.te = te;
}
public A getA(){
return te;
}
}
class C{
private A te;
publicC(){
te = new A("");
}
publicvoidsetA(A te){
this.te = te;
}
public A getA(){
return te;
}
}
类的继承和转型相关public class Test { public static void main(String[] args) { /* *a是父类指向子类的一个引用对象,a只能调用父类定义了的方法, *若子类重写了这个方法,则调用的方法是子类重写的那个方法 */ A a = new B();//向上转型