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中的多态性是面向对象编程的一个核心特性,它允许我们设计更加灵活和可扩展的代码。在Java中,多态性(Polymorphism)主要体现在两个方面:方法的重写(Overriding)和接口的实现(Interface Implementation)。...
本学习笔记主要涵盖了Java的基础知识,包括面向对象、集合、IO流、多线程、反射与动态代理以及Java 8的新特性等方面,旨在帮助初学者或有经验的开发者巩固和提升Java编程技能。 1. 面向对象(OOP):Java的核心是...
这份"Java入门学习笔记"涵盖了imooc网站上Java入门课程的三个赛季的内容,旨在为初学者提供一个全面的学习资源。 笔记的第一部分是"Java入门第一季学习笔记",它可能包括Java的基础概念和语法。这部分可能会讲解...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
在Java编程语言中,多态(Polymorphism)和接口(Interface)是两个核心概念,它们对于理解和构建面向对象程序至关重要。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。接口则提供了类之间的抽象连接...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
Java开发学习笔记主要针对的是初学者,旨在帮助他们掌握Java编程的基础知识。下面将详细讲解Java开发中的核心概念和步骤。 一、Java环境变量设置 在开始Java编程之前,我们需要安装Java Development Kit (JDK)并...
Java学习笔记(到多态部分)
《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...
### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...
2. **面向对象编程**:Java是一种面向对象的语言,学习笔记会深入解释类、对象、封装、继承、多态等核心概念。了解如何定义和使用类,以及如何通过继承和多态来设计可复用和灵活的代码。 3. **异常处理**:Java的...
这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...
### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...
理解封装、继承和多态是Java面向对象编程的关键概念。 3. **数组与集合**:数组用于存储固定数量的同类型元素,而集合框架(如ArrayList、LinkedList、HashSet、HashMap等)则提供了动态存储和操作对象的能力。 4....
"java校招学习笔记"显然是针对应届毕业生或求职者准备的,旨在帮助他们掌握Java的基础知识和校招面试中常见的技术问题。这份笔记可能包含了从基础概念到进阶主题的全面概述,以提高求职者的竞争力。 首先,Java的...
Java学习笔记.pdf Java 是一种广泛应用的编程语言,它的开发环境、语言特点、基础语法等方面的知识是初学者必须掌握的。本资源提供了一个系统的 Java 学习笔记,涵盖了 Java 基础、面向对象、Java SE 核心等方面的...
"Java超强学习笔记"显然是一份全面且深入的Java学习资料,由一位极具洞察力和组织能力的作者精心编纂。这份笔记可能包含了从基础知识到高级特性的全方位讲解,旨在帮助学习者构建坚实的Java编程基础,并提升他们的...
Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及核心特性。这份PPT简体版旨在帮助读者快速掌握Java开发的基本技能,逐步成为一名合格的Java程序员。 Java JDK...