Python 5) 基础 继承
2017-10-21 01:00
302 查看
继承(inheritance)是面向对象的重要概念。继承是除组合(composition)之外,提高代码重复可用性(reusibility)的另一种重要方式。我们在组合(composition)中看到,组合是重复调用对象的功能接口。我们将看到,继承可以重复利用已有的类的定义。
类的继承
继承的特点:1)在java中,,只支持单继承,不支持多继承
多继承的语法:class 子类名 extends 父类名1.父类名2...{}
2)虽然java语言不支持多继承,但是支持多层继承!
举例:
class GrandFather{
public void function(){
System.out.println("我是爷爷....");
}
}
//父类名
class Father extends GrandFather{
public void show(){
System.out.println("我是老子....");
}
}
//class Monther{
// public void method(){
// System.out.println("show Method");
// }
//}
//单继承
class Son extends Father{
public void function2(){
System.out.println("我是儿子....");
}
}
/**子类
java是不支持多继承的!
class Son extends Father,Monther{
}*/
//测试类
public class ExtendsDemo2 {
public static void main(String[] args) {
//创建Son类的对象
Son s = new Son() ;
s.function() ;//访问爷爷中的方法
s.show() ;//访问的是父亲中的方法
s.function2() ;
}
}
继承中的注意事项:
1)子类是将父类中的所有东西都会继承过来;(父类中私有的成员方法或者成员变量可以继承过来,但是不能直接访问或者直接使用,私有的只能在本类访问!)
2)不要为了部分功能而使用继承.
3)子类不能继承父类的构造方法,但是可以通过一个关键字:super.
方法重写(覆盖)(override):
方法重写总结:
1.方法覆盖:
1)子类覆盖父类的方法,必须有同样的参数返回类型,否则编译不能通过
2)子类覆盖父类的方法,在jdk1.5后,参数返回类可以是父类方法返回类的子类
3)子类覆盖父类方法,可以修改方法作用域修饰符,但只能把方法的作用域放大,而不能把public修改为private
4)子类方法能够访问父类的protected作用域成员,不能够访问默认的作用域成员
5)子类的静态方法不能隐藏同名的父类实例方法
6)java与C++一样,继承的方法具有多态性
//以上6个结论已经过代码验证
2.成员覆盖:
1)当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量
这个听起来很容易理解的一回事,但是实际使用过程中很多人容易搞混:尤其是在多态的时候,调用一个被继承的方法,该方法访问是一个被覆盖的成员m,那么方法中到底是访问了父类的成员还是子类的成员m?结论是,若实际调用的是父类的方法,就使用了父类的该成员m,若实际调用的是子类的方法,就使用子类的成员m,记住一句,每个类使用成员都相当于在前面加了 一个this指针。
3.构造函数:<
4000
/span>
当子类继承一个父类时,构造子类时需要调用父类的构造函数,存在三种情况
1)父类无构造函数或者一个无参数构造函数,子类若无构造函数或者有无参数构造函数,子类构造函数中不需要显式调用父类的构造函数,系统会自动在调用子类构造函数前调用父类的构造函数
2)父类只有有参数构造函数,子类在构造方法中必须要显示调用父类的构造函数,否则编译出错
3)父类既有无参数构造函数,也有有参构造函数,子类可以不在构造方法中调用父类的构造函数,这时使用的是父类的无参数构造函数
总结
extends
重写(覆盖)也叫复写
构造函数
相关文章推荐
- Py修行路 python基础 (十六)面向对象编程的 继承 多态与多态性 封装
- 2015/9/22 Python基础(18):组合、派生和继承
- python基础===继承和多继承
- python类的继承--------类的基础(四)
- Python开发基础-Day20继承实现原理、子类调用父类的方法、封装
- python基础(05)——类,对象,私有化封装,继承
- 类和对象:继承 - 零基础入门学习Python038
- Python基础9 继承,类函数、静态函数,内置变量
- [零基础学python]编写类之四再论继承
- python基础===继承
- Python基础(17)_面向对象程序设计(抽象类、继承原理、封装、多态,绑定方法)
- 零基础入门学习Python(18):对象(3)继承
- python基础——多重继承
- python 继承基础
- Python基础-继承与多态
- Python基础-继承与派生
- python的类的多重继承---------------------------类的基础(十)
- Python3基础 多重继承 一个子类继承于多个父类
- Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)
- Python基础-继承和多态