class A1{
public void fun1() {
System.out.println("方法一");
}
public void fun2() {
System.out.println("方法2");
}
}
class B1 extends A1{
public void fun1(){
System.out.println("重写A1的方法1");
}
public void fun2(){
System.out.println("重写A1的方法2");
}
}
class D1 extends Object {
private int age ;
private String name;
public D1() {
// TODO Auto-generated constructor stub
}
public D1(String name,int age) {
this.name = name;
this.age = age;
}
//比较两个对象的内容是否相等 重写object 的equals方法
@Override
public boolean equals(Object obj) {
D1 d1 = null;
if (obj instanceof D1) {//如果传进来的对象是D1的子类那么就对属性做比较
d1 = (D1) obj;
if (d1.name == name && d1.age == age)
return true;
else
return false;
}else
return false;
}
}
public class Test {
public static void main(String[] args) {
/* B1 b1 = new B1();
//callA(b1);
A1 a = b1;//子类能自动的转换成父类
// callA(a);
A1 a1 = new A1();
callA(a1);*/
D1 d1 = new D1("张三", 10);
D1 d2 = new D1("张三", 10);
D1 d3 = new D1("李四", 10);
if (d1.equals(d2)) {
System.out.println("d1和d2是相同的");
}
if (d1.equals(d3)) {
System.out.println("d1和d3是相同的");
}else {
System.out.println("d1和d3是不相同的");
}
}
//编译器自动将 类B1转换成A1类型
public static void callA(A1 a1){
a1.fun1();
a1.fun2();
/*
B1 b1 = (B1) a1;//强制类型转换
b1.fun1();
b1.fun2();
B1 b1 = a1;
b1.fun1();
b1.fun2();// 这样是错误的
*/ }
}
打印结果:
d1和d2是相同的
d1和d3是不相同的