• 《Java编程思想》阅读笔记3


    (1)绑定:将一个方法调用同一个方法主体关联起来(换句话说,方法调用与这个所调用的方法的实现关联起来,有多态的存在,可能是相同的函数名,却是不同的实现)。若再程序执行前进行绑定(如果有的话,由编译器和链接程序实现)叫前期绑定;在运行时根据对象的类型进行绑定(具体说,例如根据方法调用主体的类型、输入参数的类型),叫后期绑定或动态绑定、运行时绑定。Java中除了static方法和final方法(private方法属于final方法)之外,其它的方法都是后期绑定的。
       (2)由基类产生的多个对象,可以用不同子类初始化,进而这些对象调用的方法被绑定到子类的方法(基类和子类共有的),但是这些对象不能调用子类新增的方法。( ?)
       (3)初始化顺序:
        a.将分配给对象的存储空间初始化为二进制的零
        b.从基类到子类静态域的初始化
        c.往上(基类)调用构造函数
        d.按照声明的顺序调用成员初始化方法
        e.调用导出类的构造器的主体
    附个简单的程序感受一下:

    package com.test.myjava;

    class Shape{
    public void draw(){
    ;
    }
    Shape(){
    System.out.println("Class Shape");
    }
    static{
    System.out.println("Shape static field");
    }
    }
    class One{
    static int count = 0;
    One(){
    System.out.println("Class One"+count++);
    }
    }
    class Circle extends Shape{
    One o1 = new One();
    One o2 = new One();
    int i = 3;
    static {
    System.out.println("Circle static field ");
    }
    Circle(){
    System.out.println("Class Circle");
    System.out.println("member i="+ i);
    }
    public void draw(){
    System.out.println("Circle draw");
    }
    public void circleOnly(){
    System.out.println("Circle Only");
    }
    }
    public class BlankFinal {

    public static void main(String args[]){
    Circle c = new Circle();
    c.circleOnly();
    }
    }
       (4)协变返回类型:在子类中的 覆盖了基类的 方法的返回类型可以是基类中被覆盖方法的返回类型的子类型(导出类型);例如基类中某个方法返回Shape类型,子类中覆盖了这一方法,可以返回Circle类型(Circle继承Shape)
       (5)状态模式:运行中动态地改变对象(例如:利用引用在运行时可以与另一个不同的对象重新绑定起来,即同属于一个基类的不同子类间转换,类似于状态转换)。

  • 相关阅读:
    动态添加placeholder
    texworks编码问题
    c++ 小知识(不定期更新)
    写一个简单的 Makefile
    ubuntu 忘了密码
    遍历各种组合
    分形
    C++ 尾递归优化
    基于 QQBot 实现简易 QQ 机器人
    遇到问题:在函数中开辟动态内存(已解决)
  • 原文地址:https://www.cnblogs.com/lihaodeworld/p/14809828.html
Copyright © 2020-2023  润新知