`

java多态的学习笔记

    博客分类:
  • JAVA
阅读更多

1.有关多态覆盖私有方法

public class PrivateOverride {
	private void f(){System.out.println("private f()");}
	public static void main(String[] args){
		PrivateOverride po = new Derived();
		po.f();
	}

}

class Derived extends PrivateOverride{
	public void f(){
		System.out.println("public f()");
	}
}

 Output:

private f();
 

 

结论:在多态机制中,只有非private方法才可以被覆盖。在导出类中,对于基类的private方法,最好采用不同的名字。

 

2.有关多态机制中的域和静态方法

class Super{
	public int field = 0;
	public int getField() {
		return field;
	}
}

class Sub extends Super{
	public int field =1;
	public int getField(){
		return field;
	}
	public int getSuperField(){
		return super.field;
	}
}

public class FeildAccess {
	public static void main(String[] args){
		Super sup = new Sub();
		System.out.println("sup.field = " + sup.field + 
				", sup.getField() = " + sup.getField());
		Sub sub = new Sub();
		System.out.println("sub.field = " + sub.field + 
				", sub.getField() = " + sub.getField() + 
				", sub.getSuperField() = " + sub.getSuperField());
	}
}

 

Output:

sup.field = 0, sup.getField() = 1
sub.field = 1, sub.getField() = 1, sub.getSuperField() = 0

 当Sub对象转型为Super引用时,任何域访问操作都将由编译器解析,因此不是多态。这里为Super.field和Sub.field分配了不同的存储空间。这样Sub实际上包含两个称为field的域,然而在引用Sub中的field时所产生的默认域并非Super版本的field域。

 

3.构造器和多态-构造器调用顺序

class Meal{
	Meal(){
		System.out.println("Meal()");
	}
}
class Bread{
	Bread(){
		System.out.println("Bread()");
	}
}

class Lunch extends Meal{
	private Bread b = new Bread();
	Lunch(){
		System.out.println("Lunch()");
	}
}
public class Sandwich extends Lunch {
	private Bread b = new Bread();
	public Sandwich(){
		System.out.println("Sandwich()");
	}
	public static void main(String[] args){
		new Sandwich();
	}

}
 

Output:

Meal()
Bread()
Lunch()
Bread()
Sandwich()

 构造器调用顺序:

1)调用基类的构造器。

2)按声明顺序调用成员的初始化方法。

3)调用导出类构造器主体。

 

分享到:
评论

相关推荐

    Java-多态--学习笔记.docx

    JAVA学习笔记,java知识点总结

    多态和接口学习笔记

    多态和接口学习笔记 https://blog.csdn.net/zhongxiayue/article/details/88967550

    Java学习笔记(多态封装)

    内容为本人学习java多态封装时整理的基础知识笔记,内容包括java中的多态和封装

    Java学习笔记(到多态部分)

    Java学习笔记(到多态部分)

    Java学习笔记

    Java学习笔记,java的继承、多态、抽象的具体介绍。以及在学习java基础过程中遇到的问题

    Java基础学习笔记(印象笔记)

    Java基础学习笔记(印象笔记) Java 是一种广泛使用的面向对象编程语言,最初由 Sun Microsystems(现为 Oracle Corporation)于1995年发布。它具有简单、易学、可移植、安全和高性能等特点。 Java 是一种跨平台语言...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    JAVA语言学习笔记4-9

    JAVA语言学习笔记4-9 主要讲JAVA的OOP(面向对象) 封装 继承 多态 以及JAVA中的异常处理机制等

    java学习笔记 初学者必读

    1.1. JAVA特点 1-4 1.2. 运行原理 1-4 1.3. JAVA目录 1-4 2. 一•基础知识 2-4 2.1. 配置环境 2-4 2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}...

    java面试笔试题库java学习笔记开发教程互联网公司面试资料大全合集.zip

    java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁.docx Java在游戏服务器开发中的应用.docx java基础总结大全.txt Java开发与技术挑战——关于技术的技术思考.docx Java...

    java日常学习笔记第二篇.md

    java日常学习,关于继承和多态的知识点,还有一些抽象类abstract类和方法的使用,这些是我的个人笔记,在学习过程不懂得东西,也仅供大家参考。

    java学习笔记.rar

    Java基础部分笔记,封装多态继承模块类,异常和集合,IO类File类等学习笔记

    java内部学习笔记.docx

    3.13多态 25 3.14抽象类 25 3.15接口 25 3.16内部类 26 3.17匿名类 27 3.18二维数组和对象数组 28 3.19其他注意事项 28 Java SE核心I 30 4.1 Object类 30 4.2 String类 31 4.3 StringUtils类 33 4.4 StringBuilder类...

    JAVA学习笔记.docx

    1. 开发环境Eclipse软件的下载与配置 2. JAVA的基础知识 3. JAVA面向对象编程 (1) 编写类的步骤 (2) 对象的创建及访问对象中的属性及方法 (3) 构造方法与重载 ...6. 继承、重写、多态等相关笔记

    java学习笔记-java思维导图流程图表格整理

    Java学习笔记 1 命令行运行 1 Java基础 1 注释 1 单行注释 1 多行注释 1 文档注释 1 标识符和关键字 2 数据类型 4 类型转换 7 变量 9 基本运算符 10 包机制 12 Javadoc 12 使用命令行生成 12 使用idea生成 12 Java...

    Java学习笔记一

    Java的引用类型分析,及其传值内存解析。包括Java继承多态等关键基础技术、帮大家更加牢固的掌握基础知识、每天根据老师所教整理笔记上传上来供大家参考一起学习,谢谢、

    Core Java 基础学习笔记

    老师总结的一些java应用技术,再次提供给广大的java爱好者

    记录所有有关java的学习笔记.rar

    JAVA是一种面向对象的程序设计语言,面向对象就是在计算机设计程序过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 1.1 面向对象 面向对象编程的本质就是:以类的方式...

    JAVA学习笔记第八天——示例代码Day08

    JAVA学习笔记第八天——示例代码Day08,包含接口作为方法参数和返回值示例代码、多态示例代码、内部类示例代码

    学习笔记:抽象封装、继承、多态.doc

    本文档记录了类与类的、抽象封装、继承、多态几种表现形式,通过实际开发,加上自已的理解总结了这几种表现形式。...对开刚学习java的朋友们非常有用,还加上的例子,比较易懂。。。欢迎大家下载哦。。

Global site tag (gtag.js) - Google Analytics