//有继承 有重写 父类引用指向子类对象interface A { public void methodOfA(); };class B implements A { public void methodOfA() { } public void methodOfB() { } }class C implements A { public void methodOfA() { } public void methodOfC() { } }public class IdentifyBOrC { public static void main(String[] args) { A firstA = new B();// firstA不知道自己是B还是C,只能调用A中的方法 System.out.println(firstA.getClass().getSimpleName());// 直接打印对象对应的类名就知道自己的身份了 A secondA = new C();// secondA不知道自己是B还是C,只能调用A中的方法 System.out.println(secondA.getClass().getSimpleName());//直接打印对象对应的类名就知道自己的身份了 } } /*output: B C */
interface A { public void methodOfA(); };class B implements A { public void methodOfA() { } public void methodOfB() { } }class C implements A { public void methodOfA() { } public void methodOfC() { } }public class IdentifyBOrC { public static void main(String[] args) { A firstA = new B();// firstA不知道自己是B还是C,只能调用A中的方法 System.out.println(firstA.getClass().getSimpleName());// 直接打印对象对应的类名就知道自己的身份了 A secondA = new C();// secondA不知道自己是B还是C,只能调用A中的方法 System.out.println(secondA.getClass().getSimpleName());//直接打印对象对应的类名就知道自己的身份了 } }
//有继承 有重写 父类引用指向子类对象interface A {
public void methodOfA();
};class B implements A {
public void methodOfA() {
} public void methodOfB() {
}
}class C implements A {
public void methodOfA() {
} public void methodOfC() {
}
}public class IdentifyBOrC {
public static void main(String[] args) {
A firstA = new B();// firstA不知道自己是B还是C,只能调用A中的方法
System.out.println(firstA.getClass().getSimpleName());// 直接打印对象对应的类名就知道自己的身份了
A secondA = new C();// secondA不知道自己是B还是C,只能调用A中的方法
System.out.println(secondA.getClass().getSimpleName());//直接打印对象对应的类名就知道自己的身份了
}
}
/*output:
B
C
*/
public void methodOfA();
};class B implements A {
public void methodOfA() {
} public void methodOfB() {
}
}class C implements A {
public void methodOfA() {
} public void methodOfC() {
}
}public class IdentifyBOrC {
public static void main(String[] args) {
A firstA = new B();// firstA不知道自己是B还是C,只能调用A中的方法
System.out.println(firstA.getClass().getSimpleName());// 直接打印对象对应的类名就知道自己的身份了
A secondA = new C();// secondA不知道自己是B还是C,只能调用A中的方法
System.out.println(secondA.getClass().getSimpleName());//直接打印对象对应的类名就知道自己的身份了
}
}
01.<span style="font-size:18px;">public class People {
02.void Speak() {
03. }
04.}
05.class Chinese extends People {
06. void Speak() {
07. System.out.println("汉语");
08. }
09.}
10.class American extends People {
11. void Speak() {
12. System.out.println("English");
13. }
14.}
15.</span>
<span style="font-size:18px;">public class People {
void Speak() {
}
}
class Chinese extends People {
void Speak() {
System.out.println("汉语");
}
}
class American extends People {
void Speak() {
System.out.println("English");
}
}
</span>
这个时候涉及到的概念就是我们重写了父类的方法另一种多态是关于重载的一个类中的摸个方法可以定义多次,相同的方法名但是根据参数的不同而选择不同的方法。例如:view plaincopy to clipboardprint?
01.public class People {
02. void speak(int g) {
03. System.out.println(""+1);
04. }
05. void speak(String s) {
06. System.out.println(s);
07. }
08.