01.方法可以被重载和重叠,但是:构造函数只能被重载;
02.在用父类型变量引用其子类型对象时,该引用调用的方法必须是父类具有或者是父类和子类共同具有的方法,而不能调用只有子类具有的方法;
03.当子类重叠(override)父类中的方法时,其对所重叠的方法的限制(修饰符)不能大于其父类对该方法的限制;
04.子类中重叠(override)父类的方法时应满足如下几点要求:
(1.)参数列表要完全匹配;(2.)返回类型要完全匹配;
(3.)访问修饰符的限制程度一定要等于或低于父类(方法)访问修饰符的限制;
(4.)子类(方法)中不能抛出新的或比父类(方法)更宽的检测异常;
(5.)final类型的方法不能被重叠(override);
(6.)不能被继承的方法(如private方法)是不能被重叠(override)的;
05.子类中重载(overload)父类的方法时应满足如下几点要求:
(1.)参数列表必须要改变;(2.)返回类型可以改变;
(3.)访问修饰符可以改变;
(4.)子类(方法)中可以抛出新的或比父类(方法)更宽的检测异常;
(5.)可以载同一个类之内或其子类中重载方法;
06.在调用重载函数时是重载函授参数列表中的(参数)引用类型(reference type)而不是对象类型(object type)决定调用哪一个重载函数的。
总而言之:哪一个重叠方法被调用是在运行时由(实际的)“对象类型”决定的;哪一个重叠方法被调用时在编译时由“引用类型”决定的;
08.
09.构造函数调用顺序:先调用子类的构造函数,再依次调用其父类的构造函数;
10.构造函数使用规则:
(1.)构造函数可以使用任何访问修饰符(private、protected、public);
(2.)在类定义中存在和构造函数同名的方法是合法的;
(3.)只要在类定义中提供了任何带参数的构造函数,系统将自动取消不带参数的默认构造函数;
(4.)每一个构造函数必须把对重载构造函数的调用语句(this())或对父类构造函数的调用语句(super())作为他的第一条语句(但在同一个构造函数中不能同时出现this()和super());备注:调用(类本身)自己的构造函数使用this方法(this(…)总是意味着调用同一个类中的另外一个构造函数);
若用户没有在构造函数中显示编写这两行语句,则系统会自动加上一条语句即:
Super();
(5.)抽象类也同样具有构造函数;然而接口却没有构造函数;
(6.)构造函数不能直接通过语句(代码)调用;
(7.)构造函数一定不能有返回值,而且其名称一定要和类名完全一致!
11.构造函数不能被继承,也不能被重叠(override),因为他不是方法!!
12.在构造函数中调用的方法必须是static方法,因为非static方法(和实例对象有关)只能在构造函数运行以后才能被使用;
13.重载一个方法必须改变参数列表,只改变返回类型是不行的!!换句话说只要你改变了参数列表就算重载了该方法;
14.关于方法返回类型:
(1.)在返回对象引用的方法中,返回类型可以是null;
(2.)数组是合法的返回类型;
(3.)在返回void类型的方法中,不能返回任何东西;
(4.)
15.接口(interface)没有构造函数,抽象类有构造函数;构造函数不能被继承也不能被重载;
16.如果一个类中存在public的实例变量,则称该类是不符合封装规范的;
17.保护访问修饰符(proteted)比默认访问修饰符(defa ult)更限制更宽松一些;
18.若在父类中只有带参数的构造函数,那么在继承父类的子类的构造函数中就必须显示的调用带参数的super(…)语句;
|
|