继承是什么
继承就是.将super的变量和函数直接拿过来用.然后子类有自己的变量.
如何构造
1) Java的默认构造函数
首先new的时候会调声明好变量.
1如果一个类,不定义同名的构造函数,那么声明之后,会用默认的构造函数进行赋值(也许根本就没调用).
2如果有构造函数,就会按照参数进行调用.
这里有个细节.如果类里面有构造函数,那么就会不再调用默认的,就必须在new的时候调用这个构造函数.(一定要使用super传进来所需要的参数,或者有无参数的构造函数在上面)
还有用this去写不会出错.比较好.
2)子类父类顺序.
首先声明父类 父类构造函数
声明子类成员 子类构造函数
3)如何使用父类的方法?
父类的成员一般是private的.这时候就像构造一样,不能子类直接完成.使用super.f().来调用父类的方法.
4)多态调用函数的细节.(绑定)
这个要注意,多态和重载是密不可分的.只有触发了重载,才可以进行多态的函数动态绑定调用,简单说
多态 可以认为分为静态多态(重载) 和动态多态 (重写).
动态绑定的前提是
1。需要有继承的存在。
2。需要有方法的重写
3。父类引用指向子类对象。
这里面的讨论是一个小问题的细节
http://mooc.study.163.com/learn/NEU-2001224004?tid=2001309021#/learn/forumdetail?pid=2001571079
5)什么是静态方法
static final 和private的处理不太一样.这些都在编译阶段就可以确定.
6)什么是override?
当子类使用父类的函数签名(函数名 和 参数类型一致)就触发了override.这时候有两个要求
1)子类的访问性不能低于父类(当父类使用public 子类也必须是public)
2)子类的返回类型要属于父类返回类型的子类型.
这里面还有一些关于函数签名的细节
1)子类不能有父类的相同函数,但是又不重写.
2)相同函数名不同调用参数,是不同的函数.