`

知识梳理:回顾Java父类,子类问题

 
阅读更多
父类:Class Father
子类:Class Son extends Father

package com.zwq.test;

/**
 * 
 * @author Jerome
 */
public class Father {
	static String father_name = "";
	String father_filed_name="Father";

	static {
		father_name = "I am Father!";
		System.out.println("Father static stock");
	}

	Father() {
		System.out.println("Father Constructor");
	}

}




package com.zwq.test;

/**
 * 
 * @author Jerome
 */
public class Son extends Father {
	static String son_name = "";
	String son_filed_name="Son";

	static {
		son_name = "I am Father!";
		System.out.println("Son static stock");
	}

	Son() {
		System.out.println("Son Constructor");
	}
}



一、执行顺序:
Son son = new Son();

运行结果:
Father static stock
son static stock
Father Constructor
son Constructor

总结:
1、现有父类,再有子类:当要创建子类这个对象时,发现这个类需要一个父类,所以把父类的.class加载进来,先构造父类;
2、创建顺序依次是:静态变量、块、方法-->成员变量、方法;


二、相互转化:
1、子类——>父类:
Father father = new Son();

在这里Son 对象实例被向上转型为Father了,但Son对象实例在内存中的本质还是Son类型的,是只father实例指向了son对象。这个时候其能力临时被消弱了,即:部分属于Son而不属于Father的属性和方法无法使用。

2、父类——>子类:
Son son = (Son)new Father();

属于强制类型转换,上述转换会抛出ClassCastException异常信息,当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。
Father son = new Son();
Son son1 = (Son)son;

这样就可以强制转换了,即要转换成什么类型,其本质应该是什么类型;

三、instanceof:
java中的instanceof运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
直接引用别人的结论:
1、对象实现一个接口,用这个对象和这个接口进行instanceof判断,都为true。
2、对象和父类进行instanceof判断,都为true。
3、对象和他的子类进行instanceof判断为false。
可参看:http://09572.iteye.com/blog/1562277
分享到:
评论

相关推荐

    《HEAD-FIRST-JAVA》第一次回顾和整理.doc

    ### 《HEAD-FIRST-JAVA》知识点总结 #### 第一章:进入 Java 的世界 - **Java 的工作原理**:Java 是一种高级编程语言,运行在虚拟机(JVM)之上,这种架构使得 Java 应用可以在多种平台上运行,无需重新编译。 - ...

    java知识点回顾

    根据提供的文件信息,我们可以整理出以下关于Java的重要知识点回顾: ### 1. Java 基本数据类型 Java 提供了多种基本数据类型,包括数值型、字符型和布尔型等。 - `byte`: 占用 1 字节,取值范围为 -128 至 127。...

    面向对象程序设计Java听课笔记

    浙江大学翁恺老师的Java视频课程深入浅出地讲解了这一主题,这些笔记旨在帮助我们回顾和巩固Java开发的关键知识。 1. 面向对象编程基础 - 类与对象:Java中的基本单元是类,它是具有属性(字段)和行为(方法)的...

    51CTO学院-《Java编程思想》精讲视频教程(上部).docx

    - **伴随多态的可互换对象**:多态性允许子类对象替代父类对象。 - **单根继承结构**:Java 的继承体系是以单一基类为基础的。 - **容器**:介绍 Java 中用于存储和管理对象的容器类。 - **对象的创建和生命周期**:...

    《java课程设计》第十三周学习总结doc文档合集整理.zip

    在本压缩包“《java课程设计》第十三周学习总结doc文档合集整理.zip”中,我们可以看到聚焦于Java编程语言的学习与应用。这个资源集合是针对Java课程设计的第十三周学习成果的汇总,旨在帮助学生巩固所学知识,提升...

    面向对象Java课件

    面向对象编程是现代软件开发中的核心概念,Java作为一种流行的面向对象语言,被广泛应用于各种领域。...对于已有经验的开发者,回顾这些概念可以帮助他们更好地梳理和优化自己的代码,提升编程效率。

    thinking in java txt

    ### Java编程思想——《Thinking in Java》核心知识点梳理 #### 一、前言与学习目标 - **前言**:本书旨在帮助读者深入理解Java语言的设计理念及其在实际开发中的应用。 - **学习目标**: - 掌握Java基础知识与...

    java模式下的编程要诀源码整理

    "Java模式下的编程要诀源码整理"很显然聚焦于如何利用设计模式和最佳实践来提升Java编程的效率和质量。这个压缩包可能包含了一系列有关Java设计模式的示例代码和相关讲解,帮助开发者深入理解和应用这些模式。 设计...

    JAVA OO前14章总结

    在Java中,多态表现为子类对象可以被当作父类对象来处理,这使得代码更加灵活,提高了可扩展性。多态的实现依赖于抽象类和接口,以及方法的重写和覆盖。通过向上转型,父类型的引用可以指向子类型对象,从而调用子类...

    Crazy-JAVA-mind-map.zip_Crazy JAVA mind map_crazy_java-mindmap_m

    这份"Crazy-JAVA-mind-map.zip"压缩包包含了一个名为"Crazy JAVA mind map.mmap"的思维导图文件,这个导图就是对《疯狂JAVA讲义》内容的高度概括和逻辑梳理,旨在帮助学习者更好地理解和记忆书中的知识点。...

    长沙大计_285班_张晟.zip

    该压缩包可能是由学员张晟整理并分享的,用于回顾和学习Java OOP的知识点。 【描述】提到的"北大青鸟长沙大计javaOOP大赛2019年机试答案,详细答案"表明这是一份2019年北大青鸟长沙大计Java面向对象编程大赛的机试...

    Head First Java 中文版 下半部分

    - **继承的概念**:子类可以继承父类的属性和方法。 - **使用继承的好处**:提高了代码的复用性和扩展性。 #### 3. 多态 - **多态的定义**:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 - *...

    Java程序设计实验(2).pdf

    在Java程序设计中,实验报告主要...最后,实验报告需要按照一定的格式整理装订,便于教学管理和回顾。 通过这个实验,学生不仅能够掌握Java编程的基础,还能锻炼实际编程技能,为后续更复杂的程序设计打下坚实基础。

    安卓学习内部总结

    【安卓学习内部总结】 在安卓开发的学习过程中,基础的JAVA技能是必不可少的。面向对象编程是JAVA的核心思想,...在学习过程中,建议结合实际项目进行练习,同时定期整理和回顾,以确保每个技能点都能熟练掌握并应用。

    javase-思维导图.zip

    思维导图以其清晰的层次结构和视觉化的优势,能够帮助我们更好地梳理知识体系,从而提升学习效率。 首先,从基础的Java语法开始,这通常包括变量、数据类型、运算符、流程控制(如if语句、switch语句、循环)、数组...

    learn-note:记录笔记

    在IT行业中,Java是一种广泛应用的高级编程语言,以其“一次编写,到处运行”的特性而闻名。这个名为"learn-note:记录笔记"的压缩包文件很...对于有经验的开发者,回顾和整理这些笔记也能够巩固知识,发现新的见解。

    dam1-ed-uml-clases-tpv:图表语言UML

    7. **泛化(Generalization)与实现(Realization)**: 泛化关系用带空心箭头的实线表示,表示子类继承父类的特性。实现关系则用带空心箭头的虚线表示,表示接口或抽象类被具体类实现。 8. **接口(Interface)**: ...

Global site tag (gtag.js) - Google Analytics