zoukankan      html  css  js  c++  java
  • Java继承改进

    一.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+"岁");
        }
    }
  • 相关阅读:
    js 检测浏览器
    js获取url参数
    js 使用Math函数取得数组最大最少值
    js 取一定范围内的整数
    遍历文件夹内所有文件
    'weinre' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 解决方案
    解决图片缓存导致页面刷新无效果问题
    JAVA中的几种基本数据类型是什么,各自占用多少字节
    Mac终端git,svn提交代码步骤
    小程序分享链接功能
  • 原文地址:https://www.cnblogs.com/doStudying/p/6102953.html
Copyright © 2011-2022 走看看