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

  • 相关阅读:
    菜鸟学自动化测试(三)—-selenium 命令
    菜鸟学自动化测试(二)—-selenium IDE 功能扩展
    用js实现自动打字动画效果
    hihoCoder #1015 : KMP算法
    hihoCoder #1014 : Trie树
    android相对布局中@id和@+id的区别(原理)
    android中动态给EditText获得焦点并弹起软键盘的方法详解
    网页版井字游戏(TicTacToe)人机对战的制作(附思路和源码)
    网页版番茄时钟的制作——Pomodoro Clock
    制作网页版简易计算器(Calculator)
  • 原文地址:https://www.cnblogs.com/lihaodeworld/p/14809828.html
Copyright © 2011-2022 走看看