package com.what21.base11;
/**
* 方法重载和方法覆盖
*/
public class Test01 {
public static void main(String[] args) {
// 方法重载: 方法名相同,参数个数及类型不同
A a1 = new A();
a1.print();
a1.print(123);
a1.print(456, "str");
A a2 = new A(1111111);
a2.print();
a2.print(234);
a2.print(567, "str");
A a3 = new A(1111111,"");
a3.print();
a3.print(345);
a3.print(678, "str");
// 方法覆盖,覆盖父类的方法
A aa1 = new AA();
aa1.print();
aa1.print(123);
aa1.print(456, "str");
}
}
class A {
public A(){
}
public A(int i){
// 构造方法重载
}
public A(int i,String str){
// 构造方法重载
}
public void print(){
// 方法重载
System.out.println();
}
public void print(int i){
// 方法重载
System.out.println(i);
}
protected void print(int i,String str){
// 方法重载
System.out.println(i + "," + str);
}
}
class AA extends A{
public void print(){
// 方法覆盖
System.out.println("AA");
}
public void print(int i){
// 方法覆盖
System.out.println("AA " + i);
}
public void print(int i,String str){
// 方法覆盖,访问控制修饰符只能扩大不能缩小
// 调用已覆盖的父类方法
super.print(i, str);
System.out.println("AA " + i + "," + str);
}
}
package com.what21.base11;
/**
* 方法重载
*/
public class Test02 {
public static void main(String[] args) {
// 方法重载,也发生在接口中。
IA a1 = new ImplA();
a1.print();
a1.print(123);
a1.print(456, "str");
}
}
interface IA{
// 方法重载
public void print();
// 方法重载
public void print(int i);
// 方法重载
public void print(int i,String str);
}
class ImplA implements IA{
@Override
public void print() {
// 方法重载
System.out.println();
}
@Override
public void print(int i) {
// 方法重载
System.out.println(i);
}
@Override
public void print(int i, String str) {
// 方法重载
System.out.println(i + "," + str);
}
}