`

Java多态初步理解

阅读更多
多态,就是重载和重写.重载发生在一个类中.重写发生在子类,意思就是子类重写父类相同名称的方法.刚学语言有的东西,不必搞得那么清楚,只有知道怎么用就行了,有的问题你要想真正把它搞得很懂,短时间是不可能的,比如说接口,没有几年工作经验你根本不可能真正理解什么是接口,甚至有的人工作四,五年也没搞明白什么是接口,不要花太多时间去搞这些不容易搞懂的问题.
重载的特性,方法名相同.返回类型,传入方法的参数不同(包括个数和类型).
重写的特性,方法名相同,返回类型,参数均相同,必须发生在子类.

1.Java语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。
Animal animal=new Dog(); //引用变量animal引用一个Animal子类Dog的实例
Dog dog=(Dog)animal; //向下转型,把Animal类型转换为Dog类型
Creature creature=animal; //向上转型,把Animal类型转换为 Creature类型
animal=new Cat(); //引用变量animal引用另一个Animal子类Cat的实例
注:Creature这里指的是生物。

2.如果把引用变量转换为子类类型,称为向下转型,如果把引用变量转换为父类类型,称为向上转型。

3.在进行引用变量的类型转换时,会受到各种限制。而且在通过引用变量访问它所引用的实例的静态属性、静态方法、实例属性、实例方法,以及从父类中继承的方法和属性时,Java虚拟机会采用不同的绑定机制。

4.成员变量、静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定。
例如,对于以下这段代码:
Fathers f=new Sons();
System.out.println(“f.var=”+f.var);
System.out.println(“f.staticVar=”+f.staticVar);
f.method();
f.staticMethod();
运行时将会输出如下结果:
f.var=FatherVar
f.staticVar=StaticFaterVar
Son method
Static Father method


class Fathers{
String var="FatherVar";
static String staticVar="StaticFatherVar";
void method(){System.out.println("Father method");}
static void staticMethod(){System.out.println("Static Father method");}
}

class Sons extends Fathers{
String var="SonVar";
static String staticVar="StaticSonVar";

void method(){System.out.println("Son method");}
static void staticMethod(){System.out.println("Static Son method");}

String sonVar=null;
void sonMethod(){}
}
分享到:
评论

相关推荐

    Java面向对象初步理解

    面向对象编程是Java的核心特性...通过理解这些概念,开发者可以更好地利用Java的面向对象特性,构建可维护、可扩展的代码结构。在实际开发中,这些知识有助于设计出更符合业务需求的模型,提高软件的灵活性和可复用性。

    java教程初步讲解

    Java教程初步讲解旨在为初学者提供一套全面而深入的学习路径,帮助他们快速掌握这门广泛应用于全球的编程语言。Java以其“一次编写,到处运行”的跨平台特性,以及在企业级应用、移动开发(尤其是Android)、云计算...

    JAVA初步学习课件

    【JAVA初步学习课件】是针对Java初学者设计的一系列学习资源,涵盖了从基础到进阶的多个章节,旨在帮助新手全面理解Java编程语言的基本概念和技术。这些课件包括了文档和幻灯片,便于学习者系统性地掌握Java的核心...

    java Query接口初步.avi

    Java中的Query接口并未在描述和标签中明确提及,但我们可以借此机会深入探讨一下Java编程语言中的面向对象特性,这是理解任何Java应用开发的基础。 面向对象编程(Object-Oriented Programming,OOP)是一种编程...

    java初步学习指导

    - 学习 Java 的基本语法,如变量、数据类型、控制流语句(if、for、while)、类与对象、封装、继承、多态等。 - 掌握异常处理机制,理解 try-catch-finally 结构。 8. **集合框架**: - 学习 List、Set、Map 等...

    华育国际java初步课间及课上练习

    3. **类与对象**:Java的核心在于面向对象编程,所以理解和创建类,理解封装、继承和多态等面向对象特性是关键。 4. **数组**:学习如何声明、初始化和操作数组,包括一维数组和多维数组。 5. **字符串处理**:...

    使用Java理解程序逻辑第2章.zip

    在本压缩包“使用Java理解程序逻辑第2章.zip”中,主要涵盖了Java SE(标准版)的基础知识,特别是关于程序逻辑的构建。这通常包括基本语法、控制流程、数据类型以及面向对象编程的一些初步概念。以下是根据这些内容...

    初步了解java编程语言

    Java编程语言是面向对象的、跨平台的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。它的设计理念是“一次编写,到处运行”...对于初学者来说,理解并掌握这些概念是进一步学习Java技术栈的基础。

    Java游戏编程初步

    理解面向对象编程的概念,如封装、继承和多态,这些都是编写任何Java程序,包括游戏的基础。 2. **图形库和框架**:在Java中,用于游戏开发的图形库有多种,例如JavaFX和 lwjgl( Lightweight Java Game Library )...

    Java解惑(中文版)_java_java解惑_solve65p_

    Java语言的特性包括封装、继承、多态和抽象,这些是面向对象编程的基础。 在《Java解惑》中,初学者可以学习到以下关键知识点: 1. **基础语法**:了解Java的基本数据类型(如整型、浮点型、字符型、布尔型),...

    java语言结构初步

    Java语言结构初步是编程入门的重要阶段,它涵盖了Java的基础语法、数据类型、控制流程、类与对象等核心概念。对于初学者来说,找到合适的资源至关重要,因为这些基础知识将为后续的编程学习打下坚实的基础。 Java是...

    Java实习周报通用25篇

    通过这五个礼拜的实习,实习生不仅掌握了Java编程的基础和高级知识,也锻炼了实际问题解决能力,对软件开发流程有了初步认识。这为他们后续的学习和职业生涯打下了坚实的基础。在实习过程中,不断挑战自我,适应新...

    JAVA 面与对象基础 与理解

    在Java中,多态有两种主要形式:编译时多态(方法重载)和运行时多态(方法重写)。运行时多态是通过对象的动态绑定实现的,使得我们在编写代码时可以使用父类引用指向子类对象,这样就能调用子类特有的方法,增加...

    JavaOOP_第1章上机练习.zip

    在"JavaOOP_第1章上机练习.zip"这个压缩包中,我们可以预见到它包含了关于Java OOP的初步学习材料,特别是针对初学者的上机实践练习。 在Java OOP中,有四个核心概念:封装、继承、多态和抽象。这些概念是理解Java ...

    Head First Java(中文版)

    通过上述内容的讲解,本书能够帮助Java初学者建立起编程的初步框架,为之后的深入学习和职业发展打下坚实的基础。由于书籍内容的具体章节和知识点布局在提供的信息中并不完整,上述知识点是根据描述和部分内容推测出...

    北大青鸟的S1Java的作业

    初步了解Java的多线程编程,包括Thread类和Runnable接口的使用,以及同步机制(如synchronized关键字、wait()、notify()和notifyAll()方法)。 七、附加题 附加题通常用于巩固和拓展学生的知识,可能涉及更复杂的...

    使用Java理解程序逻辑第1章.zip

    这些知识点构成了Java SE的初步学习框架,对于理解和掌握程序逻辑至关重要。通过本章的学习,读者应能编写简单的Java程序,并具备基本的编程思维。在实际操作中,结合Chapter01中的示例代码,将理论与实践相结合,将...

    java实验指导任务书--包括14个任务书

    9. **任务九:Java Swing GUI编程** - 初步接触图形用户界面设计,使用Swing库创建窗口应用,理解组件、布局管理和事件处理。 10. **任务十:Java Applet** - 虽然现在不常用,但理解Applet可以帮助学习者了解Java...

    Java基础教程之类型转换与多态

    这就是多态的初步体现,多态允许我们用基类的引用处理子类的对象,使得代码可以不关心具体的实现细节,只关注接口。 多态性是面向对象的核心特性之一,它允许我们编写通用的代码,这些代码能够处理多种类型的对象。...

Global site tag (gtag.js) - Google Analytics