`

有意思的java继承 属性和方法和上溯造型

 
阅读更多
class MyParent { 
    public int a; 
    public MyParent() { a = 3; } 
    public void addFive() { a += 5; } 
}


public class MyChild extends MyParent{ 
    public int a; 
    public MyChild() { a = 8; } 
    public void addFive() { this.a +=5; } 
     
    public static void main(String[] args) { 
        MyParent foo = new MyChild(); 
       
         foo.addFive(); 
         System.out.println("Value: "+ foo.a); 
        
         MyChild foo2 = new MyChild(); 
         foo2.addFive(); 
         System.out.println("Value: "+ foo2.a); 
        
         MyParent foo3 = new MyParent(); 
        
         foo3.addFive(); 
         System.out.println("Value: "+ foo3.a); 
        
    } 
==========================
执行后 分别打印:
Value:3; //父的属性a
Value:13;//子的属性a
Value:8;//父的属性a
//记住
java里继承 属性是不会被重写的 但是方法是会被重新的 所以MyChild foo2 = new MyChild(); 那么foo2有2个属性a 当前foo2.a是自己(子类)的属性 但是方法只有一个被重写的addFive();   如果MyParent foo = new MyChild();  那么也有2个属性a 但是当前foo.a是父的属性a 但是此时foo对象的方法被重写 只有一个 所以foo.addFive();是调用重写后的方法,如果MyParent foo = new MyParent();这样就很简单了  不再解释。

总结:
继承的话 相同的属性不会重写 会有2个 相同的方法会重写 只有一个。
同时看当前对象的句柄到底是指向子类还是父类的对象的。

分享到:
评论

相关推荐

    java中的继承(子类调用父类构造方法还不懂).doc

    Java 中的继承是指一个类可以继承另一个类的属性和方法,这样可以实现代码的复用和提高开发效率。在 Java 中,继承使用关键字 `extends` 来实现。 Java 中继承的注意事项: 1. 重写(也叫覆盖,也叫重构):重写...

    Java继承概念详细解读

    Java继承概念是Java编程语言中的一个基本机制,它允许开发者基于已经存在的类构造一个新类,复用父类的方法和域,并可以添加新的方法和域。同时,继承也可以提高代码的可读性和可维护性,避免重复的代码。

    java 程序设计笔记

    - 派生子类可以继承所有非 private 的属性和方法作为自己的成员。 - 覆盖是指子类重新定义父类已有的方法,与父类完全相同的方法名、返回值和参数类型列表。 - 重载与方法覆盖不同的是,重载不要求参数类型列表...

    Thinking in Java 中文第四版+习题答案

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    java 编程入门思考

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    Java初学者入门教学

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    java联想(中文)

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    对Java的思考(Thinking in Java) Java入门 java与C++对比 深入浅出

    本书通过对比Java和C++,使读者能够更好地理解Java的独特之处,并为初学者提供了一个逐步学习Java的框架。 第1章"对象入门"探讨了面向对象编程的基本原理,包括抽象、接口、隐藏实现、继承、多态以及异常处理。作者...

    Java课程知识点1

    多态分为编译时多态和运行时多态,实现运行时多态需要上溯造型和方法重写。 final关键字用于声明不可变的变量、方法或类。抽象类不能实例化,且可以包含抽象方法。一个非抽象子类必须实现所有抽象父类的方法。接口...

    JAVA_Thinking in Java

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    Thinking in Java简体中文(全)

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    Java面向对象程序设计多态性.ppt

    上溯造型是自动进行的,例如,一个子类对象可以被视为父类对象,因为它继承了父类的所有属性和方法。而下溯造型需要显式类型转换,如`Truck truck=(Truck)vehicle;`,这种转换需要确保实际对象确实是子类类型,否则...

    Thinking in java(中文)

    1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 ...

    thinking in java

    第7章《多形性》深入讲解了Java的多态性,包括上溯造型的概念、方法绑定、扩展性和覆写。多态性是面向对象编程中的一个重要特性,它允许我们编写更加灵活和可维护的代码。 总之,《Thinking in Java》全面覆盖了...

    Thinking in Java_all

    第七章“多形性”进一步解释了Java的多态特性,包括上溯造型和方法的动态绑定,这在面向对象编程中是至关重要的,因为它允许编写更加灵活和可扩展的代码。 总的来说,《Thinking in Java》是一本全面的教程,不仅...

    Think in Java(中文版)chm格式

    1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么?...

    JAVA课后简答题

    Java不支持多重继承,但它通过接口实现了类似的功能,一个类可以实现多个接口,从而获得多个接口中的方法。类的构造方法用于初始化新创建的对象,而成员方法是类的一般功能。方法调用的参数传递方式在Java中是按值...

Global site tag (gtag.js) - Google Analytics