`

【Thinking in Java】七:多态

阅读更多
1 向上转型
    写一个方法,它仅接收基类作为参数,而不是那些特殊的导出类,也就是说编写的代码只与基类打交道,这正式多态所允许的。

简单例子:

class Cycle {
	private String name = "Cycle";
	public static void travel(Cycle c) {
		println("Cycle.ride() " + c);
	}
	public String toString() {
		return this.name;
	}
}

class Unicycle extends Cycle {
	private String name = "Unicycle";
	public String toString() {
		return this.name;
	}	
}

public class Biking {
	public static void ride(Cycle c) {
		c.travel(c);
	}
	public static void main(String[] args) {
		Unicycle u = new Unicycle();	
	    ride(u);
	}


二 多态实现

一个方法调用和一个方法主体关联起来被称作绑定。
编译时,无法知道父类引用指向子类对象,Java解决的方法是动态绑定,在运行时根据对象的类型进行绑定,后期绑定机制,需要在对象中存有某种‘类型信息’。

2.1多态不支持私有方法
class Father{
	private void  v(){
		System.out.println("super v");
	}
	public static void main(String[] args) {
		Father f = new Son();
		f.v();
	}
}

class Son extends Father{
	private void  v(){
		System.out.println("son v");
	}
}


output--> super v

2.2 多态不支持域和静态方法

class Father{
	public int field = 0;
	public static void main(String[] args) {
		Father f = new Son();
		System.out.println(f.field);
	}
}

class Son extends Father{
	public int field = 1;
}


output--> 0


静态方法这个 大家可以参考上面的私有方法改写试一下。

静态方法是与类,而并非与单个的对象关联的。

三 多态与构造器

class Father{
	public Father(){
		System.out.println("123");
	}

}

class Son {
	public Son(){
		System.out.println("1234");
	}

	{
		System.out.println("dksjk");
	}
	private Father f= new Father();
	static{
		System.out.println("222");
	}
	public static void main(String[] args) {
	 new Son();
	}
}


output--> 222 dksjk 123 1234
代码示例中没有继承,但是通过demo可以看出

如有继承 ,先调用基类

类中的调用顺序为 静态代码块 -->按声明顺序调用成员初始化 -->构造函数
0
1
分享到:
评论

相关推荐

    Thinking in java .txt

    《Thinking in Java》第四版由布鲁斯·埃克尔(Bruce Eckel)撰写,他是MindView公司的总裁。这本书被广泛认为是学习Java编程语言的经典教材之一。从读者的反馈来看,《Thinking in Java》不仅覆盖了Java的核心概念...

    Thinking in Java 4 源码 导入IDEA可直接运行

    《Thinking in Java》是Bruce Eckel的经典之作,第四版(TIJ4)更是Java程序员必读的书籍之一。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程等众多主题。源码是...

    Thinking in Java 练习题答案

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书的练习题是学习Java的重要组成部分,因为它们能够帮助读者巩固理论知识并提升实践能力。以下是对"Thinking in ...

    《thinking in java》第三版完整PDF书籍+习题答案(中文版)

    《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的权威指南。该书以其深入浅出的方式,详尽地介绍了Java语言的核心概念和技术。第三版是此书的一个重要里程碑,它涵盖了Java语言的诸多关键特性,...

    Thinkingin Java电子书

    《Thinking in Java》是一本备受推崇的Java编程教材,由Bruce Eckel撰写,被誉为Java学习者的必读之作。这本书深入浅出地介绍了Java语言的核心概念和技术,覆盖了从基础到高级的主题,对于有一定Java基础的读者来说...

    Thinking in Java 习题答案

    《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其详尽的解释、丰富的示例和实践性强的习题深受程序员喜爱。"Thinking in Java 习题答案"是配套的解答集,...

    thinking in java 第四版 源码

    《Thinking in Java》是Bruce Eckel的经典之作,第四版更是被广大Java开发者视为学习和进阶的重要参考书籍。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程、GUI...

    Thinking in Java(第一版)

    《Thinking in Java》是Bruce Eckel创作的一本Java编程经典教程,尤其以其第一版闻名于世。这本书深入浅出地介绍了Java语言的核心概念和技术,旨在帮助读者建立起对Java的全面理解,培养良好的编程思维习惯。作为一...

    Thinking In Java 源码

    《Thinking in Java》是Bruce Eckel的经典Java编程书籍,它深入浅出地讲解了Java语言的核心概念和技术。这本书不仅适合初学者,也对有经验的程序员提供了深入理解Java的宝贵资源。现在,我们有机会免费下载这本书的...

    Thinking in java第三版pdf及习题答案

    《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的权威指南。该书的第三版详细介绍了Java语言的核心概念和技术,对于初学者和有经验的开发者来说都是宝贵的资源。这里我们主要讨论两个文件:...

    Thinking In Java 第四版 【练习题答案 完整版】

    《Thinking in Java》是Bruce Eckel的经典之作,它详尽深入地探讨了Java编程语言的各个方面,被广大程序员视为学习Java的权威指南。第四版在原有的基础上进行了更新,以匹配Java语言的最新发展,包括Java SE 5和6的...

    thinking in java 文档

    《Thinking in Java》是Bruce Eckel的经典著作,它深入浅出地介绍了Java编程语言的核心概念和技术,对于初学者和有经验的程序员都是极好的学习资源。文档内容涵盖了许多关键知识点,包括但不限于: 1. **基础语法**...

    thinking in java 源码

    《Thinking in Java》是Bruce Eckel的经典Java编程教材,它以其深入浅出的讲解和丰富的实例赢得了广大程序员的赞誉。这个源码包包含了第4版的开发源码,旨在帮助读者更好地理解书中所阐述的概念和原理。以下是基于...

    Thinking In Java 练习题答案 第四版

    《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java语言的核心概念和技术。这本书的第四版更是经过了全面更新,涵盖了Java SE 5.0和6.0的新特性,对于初学者和有经验的开发者来说,都是一个宝贵...

    Thinking in java4(中文高清版)-java的'圣经'

    研讨课 Hands-on Java研讨课CD Thinking in Objects研讨课 Thinking in Enterprise Java Thinking in Patterns(with Java) Thinking in Patterns研讨课 设计咨询与复审 附录B 资源 软件 编辑器与IDE 书籍 分析与设计...

    Thinking in Java

    《Thinking in Java》是Bruce Eckel的经典之作,它被誉为学习Java编程的最佳教材之一。这本书以其深入浅出的讲解方式和全面覆盖的Java知识点而受到广大程序员的推崇。本压缩包包含的是《Thinking in Java》的第三版...

    Thinking in Java中英文2版

    《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其全面性、深度和清晰的讲解而受到广大程序员的推崇,无论是初学者还是经验丰富的开发者,都能从中...

    The Thinking in Java Annotated Solution Guide

    《Thinking in Java Annotated Solution Guide》是一本针对Bruce Eckel的畅销书《Thinking in Java》的解答指南,主要针对第四版的内容。这本书是Java编程学习者的宝贵资源,它提供了书中练习题的详尽解答,帮助读者...

Global site tag (gtag.js) - Google Analytics