1.如何定义扩展类???
extend :延伸,扩大,推广。
定义扩展类: 子类+ extend+基类
关键字extend是告诉编译器对子类作继承处理。// 即:拥有了基类的方法和属性。
要点:
1.java不允许多重继承。一个java类只可能直接继承自一个父类,即:java只支持单一继承。
2.继承而来的变量和方法就象在扩展类中单独定义时一样。可以看作是扩展类的一部分。因此扩展类使用继承而来的和使用自定义的是相同的。
3.关键字:super :
{
使用关键字super调用父类的构造和方法。
}
2.父类的构造方法是不被子类继承的,它们只能从子类的构造方法中用super关键字调用。
关键字super不仅可以引用父类的构造方法,也可以引用父类的方法。语法如下: super.方法名(参数)
当构造一个子类的对象时,子类构造方法会在完成自己的任务之前,首先调用他的父类的构造方法。如果父类继承自其它类,那么父类构造方法又会在完成自己的任务之前,调用它自己的父类的构造方法。这个过程持续到沿着这个继承体系结构的最后一个构造方法被调用为止。
继承:
java中的每个类都源于java.lang.Object类,如果在定义一个类时,没有指定继承性,那么这个类的父类被默认为是:Object.因为所有的java类都可以使用Object类提供的方法。
3.
java支持覆盖。即:子类修改父类中定义的方法的实现作为自己的扩展。
问题:
在什么情况下,不能覆盖???
覆盖和重载的区别是什么???
java为什么要提供覆盖机制???
3.覆盖所引发的问题:
例如:toString()方法,是在Object类中定义的。而该方法在GeometricObject类中覆盖。
考虑下面的代码:
Object 0=new GeometricObject()
System.out.println(o.toString(();
这里的o调用哪个tostring()?是父类的还是子类的toString()???
为解决这个问题:java提供了:动态绑定机制类解决。
即:java虚拟机会会依次在C1,....CN中查找方法,一旦找到一个实现,就停止查找然后调用这个第一次找到的实现。
问题:
1.如何在子类中使用父类的方法和数据???
2.如果扩展类和基类命名冲突时,该怎么办???
3.扩展类能继承基类的构造方法吗??
4.基类的构造方法能够从扩展类中调用吗???
5.为什么要调用父类的构造方法?? 难道是:子类的构造必须分两步完成吗?即:1.构造哪些自己继承的方法和属性 2.构造子类本身自定义的属性和方法吗???
6.如何理解java的多态???
"多态就意味着父类型的变量可以引用子类型的对象"
即:可以作为:
是不是:子类的实例传给父类类型的参数。 /// 这也是一种形参与实参的传递。