一.java继承改进
首先,多继承的缺点:
1.继承多个父类,父类中方法名相同,产生歧义
2.父类中方法同名,子类未覆盖,也会歧义
所以,java改进,类只能单继承,接口可以多继承
接口中只有抽象方法和静态常量
1.抽象方法只能在实现接口类中实现,调用时调用实现类的方法
2.静态变量在编译期间将确定调用关系了,存在冲突也会在编译的时候提示错误
,而且引用变量一般直接使用类名或接口名,避免产生歧义。
1.1继承的初始化
继承关系是传递的。如,类C继承类B,类B继承类A,则类C既有从类B继承下来的变量和方法,也有从类A中继承下来的变量和方法,也可以有自己的变量和方法。继承下来的变量和方法尽管是隐式的,但仍是C的变量和方法。
构造方法是按照先超类后子类的方法进行的,所有超类会在子类访问它之前进行正确的初始化。
1.2super关键字
/* super关键字 1.定义父类(Father)类 2.定义son类extends Father类 3.创建Son类对象 注意: 1.this和super很像,只能在有对象的前提下使用,不能在静态上下文使用 2.子类的构造函数默认第一行会调用父类无参数构造函数,隐式语句,super(), 如果父类无参数构造函数不存在,编译报错 3.构造函数间的调用智能放在第一行,只能调用一次。super()和this()不能同时存在构造函数第一行 题目 如果开发者自定义了一个类,没有显示的进行类的继承,那么该类中成员函数是否可以使用super关健健字? 答案:可以使用,继承了Object类,Object类是所有类的父类。 重载(overload)和重写(override) 重载: 前提:所有重载函数必须在同一个类中 特点:函数名相同,参数列表不同,其他无关(访问控制符,返回值类型) 重写: 前提:继承 特点:函数名相同,参数列表相同 子类的返回值类型要小于或等于父类的返回值类型 */ class Super { public static void main(String[] args) { Son bigHead=new Son(11); bigHead.run(); System.out.println("Hello World!"); } } class Father { int x=1; Father() { System.out.println("这是父类无参数构造"); } Father(int x) { this.x=x; System.out.println("这是父类有参数构造"); } void speak() { System.out.println("我是父亲"); } } class Son extends Father { int y=0; Son() { System.out.println("这是子类无参数构造"); } Son(int y) { this.y=y+x; System.out.println("这是子类有参构造函数"); } void run() { super.speak(); //访问父类的函数 System.out.println("我是儿子"+"今年"+y+"岁"); } }