今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下。这一部分还是非常重要的,需要仔细思考。
继承
继承:它是一种类与类之间的关系,通过使用已存在的类作为基础来建立新类。其中已存在的类称为父类(或基类); 建立的新类称为子类(或派生类)。简单的就是子类继承父类的非私有属性和方法。
需要注意的是,新定义的类可以选择继续使用父类的功能或者自己增加新的数据或新的功能,但不能选择性地继承父类。(要么继承所有(前提是非私有),要么就不继承)
只要能满足 "A is a B"的关系就可以形成继承关系,代码中是通过 extends 关键字来实现继承的。
特别注意:在java中只能继承一个父类(也就是单继承),而且子类可以访问父类的非私有成员。这个和Python不一样,Python的继承可就灵活了。
我们知道子类继承了父类之后,可以访问父类的非私有成员;但是父类的私有成员,子类还是无法直接访问。如果我们想访问呢?可以通过父类暴露的公有方法来实现间接访问。
父类对象不可以访问到子类特有的方法或属性,同时父类不可以访问子类特有成员(那怕是公有的成员)
重载
方法重载必须同时满足以下条件:
同一个类中;;
方法名相同,参数列表不同(参数顺序、个数、类型);
方法返回值、访问修饰符任意;
与方法的参数名无关。
public void printinfo() {
System.out.println("方法重载1");
};
public void printinfo(String name) {
System.out.println("方法重载2");
};
public String printinfo(String name, int age) {
return "方法重载3";
};
public String printinfo(String age, String name) {
return "方法重载4";
};
public String printinfo(int age, String name) {
return "方法重载5";
};
// 与方法的参数名无关,加上下面的代码会和上面的 printinfo(int age, String name)造成重复而报错:
public String printinfo(int size, String name) {
return "方法重载5";
};
重写
方法重写也必须同时满足以下条件:
1、在满足继