• JavaSE基础之继承


    一.概念

          父子概念的继承:圆继承于图形,圆是子概念(子类型 Sub class)图形是父类型(Super Class也叫超类),继承在语法方面的好处:子类共享了父类的属性和方法的定义,子类复用了父类的属性和方法,节省了代码。

    1)继承是is a :“是”我中的一种,一种所属关系。

    2)子类型对象可以赋值给父类型变量(多态的一种形式),变量是代词,父类型代词可以引用子类型东西。

    3)继承只能是单继承,即直接继承,而非间接继承。因为多继承容易带来安全隐患,当多个父类中定义了相同功能,当功能内容不同时,子类无法确定要运行哪一个。

    4)父类不能强转成子类,会造型异常!子类向父类转化是隐式的。

    5)只有变量的类型定义的属性和方法才能被访问!见下例。

    6)重写遵循所谓“运行期绑定”,即在运行的时候根据引用变量指向的实际对象类型调用方法。

          7)引用类型变量的类型转换 instanceof

    public static void main(String[] args) {
            Circle c = new Circle(3,4,5);        
    Rect r = new Rect(3,4,5,6); Shape s = c;
    Shape s1 = r; //Circle x = s;//编译错误,父类型变量不能赋值给子类型 Circle x = (Circle)s;//正常执行 //Circle y = (Circle)s1;//运行异常,类型转换异常 //instaceof instace:实例 of:的 //instaceof 运算 检查变量引用的对象的类型是否兼容 //s引用的是圆对象,s instanceof Circle 检查s引用的对象是否是Circle类型的实例! System.out.println(s instanceof Circle);//true System.out.println(s1 instanceof Circle);//false test(c);
    test(r);
    }
    public static void test(Shape s){//多态的参数 //if(s instanceof Circle)保护了(Circle)s不会出现异常 if(s instanceof Circle){//实现了安全的类型转换 Circle c = (Circle) s;
    System.out.println("这是一个圆, 面积"+c.area());
    }
    if(s instanceof Rect){ Rect r = (Rect) s;
    System.out.println("这是一个矩形, 面积"+r.area());
    }
    }

    8)继承时候对象的创建过程

    ①Java首先递归加载所有类搭配方法区。②分配父子类型的内存(实例变量)。③递归调用构造器。

    9)重写方法与重载方法的调用规则

        

    10)属性绑定到变量的类型,由变量类型决定访问哪个属性;方法动态绑定到对象,由对象的类型决定访问哪个方法。(强转对方法动态绑定到对象无影响,因为强转的是父类的引用,而实例是没变的,只是把实例当作另一个状态去看而已。但是强转对属性动态绑定到变量类型有影响。

    eg1:方法动态绑定到运行期间对象的方法 实例1

    eg2:方法动态绑定到运行期间对象的方法 实例2

    11)为何查阅父类功能,创建子类对象使用功能?

    Java中支持多层继承,也就是一个继承体系。想要使用体系,先查阅父类的描述,因为父类中定义的是该体系中共性的功能,通过了共性功能,就可以知道该体系的基本功能,那么这个体系已经可以基本使用了,然而在具体调用时,要创建最(低)子类的对象,原因如下:①因为父类有可能不能创建对象②创建子类对象,可以使用更多的功能,包括基本的也包括特有的。

    12)属性无继承概念,所以你有你的,我有我的,各自调用各自的,不影响,即使子父类中有同名属性也无影响。

  • 相关阅读:
    iOS 代码让手机震动一下
    iOS开发 --制作圆形的头像(UIImage)
    JAVA基本数据类型和引用数据类型的区别
    jquery基础
    JS基础
    JAVA异常详解
    单例模式详解及java常用类
    JAVA基础之字符串和面向对象
    我的第一篇博客 初识动画,飞机行小动画
    GCD系列:调度组(dispatch_group)
  • 原文地址:https://www.cnblogs.com/luke-liuqi/p/9338721.html
Copyright © 2020-2023  润新知