一、继承
B继承了A的实例方法m(int i)和实例遍量i,另外B和A的方法m()是不同的方法,不是重写,参数列表不同
class A{
protected int i;
public void m(int i) {
this.i = i;
}
}
class B extends A{
double d;
public void m(double d) {
this.d += d + i;
}
}
public class Test {
public static void main(String[] args) {
B b = new B();
b.m(5);
b.m(23.0);
System.out.println(b.d);
//28.0
}
}
二、向上造型
这不是重写方法,参数列表不同,父类就使用自身的实例方法equals(Object object)
class A{
int x;
public boolean equals(A a) {
return this.x==a.x;
}
}
public class Test {
public static void main(String[] args) {
Object a1 = new A();
Object a2 = new A();
A a3 = new A();
A a4 = new A();
String s1 = "Hello!";
String s2 = "Hello!";
System.out.println(a1.equals(a2)); // Obeject的equals方法,判读实例是否是同一个实例,显然不是
System.out.println(a3.equals(a4)); // A的equals方法
System.out.println(s1.equals(s2)); // 字符串内容是否一样
}
}
/*
false
true
true
*/