java编程思想阅读笔记(三)多态

    继续记笔记,没有什么特点,只是记些平时可能忘掉的东西,和验证一些:
   (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)状态模式:运行中动态地改变对象(例如:利用引用在运行时可以与另一个不同的对象重新绑定起来,即同属于一个基类的不同子类间转换,类似于状态转换)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值