`

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中,多态性(Polymorphism)主要体现在两个方面:方法的重写(Overriding)和接口的实现(Interface Implementation)。...

    Java基础 学习笔记 Markdownr版

    本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...

    Java入门学习笔记

    这份"Java入门学习笔记"涵盖了imooc网站上Java入门课程的三个赛季的内容,旨在为初学者提供一个全面的学习资源。 笔记的第一部分是"Java入门第一季学习笔记",它可能包括Java的基础概念和语法。这部分可能会讲解...

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    多态和接口学习笔记

    在Java编程语言中,多态(Polymorphism)和接口(Interface)是两个核心概念,它们对于理解和构建面向对象程序至关重要。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。接口则提供了类之间的抽象连接...

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    Java开发学习笔记

    Java开发学习笔记主要针对的是初学者,旨在帮助他们掌握Java编程的基础知识。下面将详细讲解Java开发中的核心概念和步骤。 一、Java环境变量设置 在开始Java编程之前,我们需要安装Java Development Kit (JDK)并...

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

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

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    韩顺平编写的java学习笔记(全)

    ### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...

    Java学习笔记(源码)

    2. **面向对象编程**:Java是一种面向对象的语言,学习笔记会深入解释类、对象、封装、继承、多态等核心概念。了解如何定义和使用类,以及如何通过继承和多态来设计可复用和灵活的代码。 3. **异常处理**:Java的...

    Java学习笔记(必看经典).doc

    这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...

    瑜琅java学习笔记

    ### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...

    Java基础尚硅谷宋红康学习笔记

    理解封装、继承和多态是Java面向对象编程的关键概念。 3. **数组与集合**:数组用于存储固定数量的同类型元素,而集合框架(如ArrayList、LinkedList、HashSet、HashMap等)则提供了动态存储和操作对象的能力。 4....

    java校招学习笔记

    "java校招学习笔记"显然是针对应届毕业生或求职者准备的,旨在帮助他们掌握Java的基础知识和校招面试中常见的技术问题。这份笔记可能包含了从基础概念到进阶主题的全面概述,以提高求职者的竞争力。 首先,Java的...

    Java学习笔记.pdf

    Java学习笔记.pdf Java 是一种广泛应用的编程语言,它的开发环境、语言特点、基础语法等方面的知识是初学者必须掌握的。本资源提供了一个系统的 Java 学习笔记,涵盖了 Java 基础、面向对象、Java SE 核心等方面的...

    java超强学习笔记

    "Java超强学习笔记"显然是一份全面且深入的Java学习资料,由一位极具洞察力和组织能力的作者精心编纂。这份笔记可能包含了从基础知识到高级特性的全方位讲解,旨在帮助学习者构建坚实的Java编程基础,并提升他们的...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及核心特性。这份PPT简体版旨在帮助读者快速掌握Java开发的基本技能,逐步成为一名合格的Java程序员。 Java JDK...

Global site tag (gtag.js) - Google Analytics