zoukankan      html  css  js  c++  java
  • 《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)状态模式:运行中动态地改变对象(例如:利用引用在运行时可以与另一个不同的对象重新绑定起来,即同属于一个基类的不同子类间转换,类似于状态转换)。

  • 相关阅读:
    监控系统播放音频断断续续的原因
    apachelog4cxx编译
    [架构]FileZilla Server架构分析
    MAC上命令行内容传递到剪贴板
    IOS上屏蔽SIGPIPE
    我想要这样的3g无线路由器
    【转】MySQL日期时间函数大全
    svnplot 将svn的日志导入数据库
    Foxmail for mac 1.0.0 使用小评
    Versions 升级了,不需要把命令行svn退到1.6了,哇咔咔
  • 原文地址:https://www.cnblogs.com/lihaodeworld/p/14809828.html
Copyright © 2011-2022 走看看