一、函数的复写(重写,override)
1.具有父子关系的两个类中
2.父类和子类各有一个函数,这两个函数的定义(返回值类型、函数名和参数列表)完全相同
class Person {
String name;
int age;
void introduce() {
System.out.println("我的名字是"+name+",我的年龄是"+age);
}
}
class Student extends Person {
String address;
//重写
void introduce () {
//System.out.println("我的名字是"+name+",我的年龄是"+age);
//使用super关键字调用父类的成员函数
super.introduce();//顺序没有要求
System.out.println("我的家在"+address);
}
}
class Test {
public static void main (String args []) {
Student student = new Student();
student.name = "张三";
student.age = 20;
student.address = "北京";
student.introduce();
/*输出:
我的名字是张三,我的年龄是20
我的家在北京
/
Person p = new Person();
p.name = "李四";
p.age = 30;
p.introduce();
/输出:
我的名字是李四,我的年龄是30
*/
}
}
//编译文件夹下的所有.java文件命令:javac *.java
二、继承、重写等综合应用:
class Printer {
void open() {
System.out.println("Open");
}
void close() {
System.out.println("Close");
}
void print(String s) {
System.out.println("print-->"+s);
}
}
class HPPrinter extends Printer {
}
class CanonPrinter extends Printer {
void close() {
this.clean();
super.close();
}
void clean() {
System.out.println("clean");
}
}
class Test {
int flag = 0;
if(flag == 0) {
HPPrinter hpPrinter = new HPPrinter();
hpPrinter.open();
hpPrinter.print("abc");
hpPrinter.close();
} else if(flag == 1) {
CanonPrinter canonPrinter = new CanonPrinter();
canonPrinter.open();
canonPrinter.print("123");
canonPrinter.close();
}
}