`

测试子类对象赋值给父类的引用

 
阅读更多
public class TestGet {
    public void a() {  
        System.out.println("aaa");  
    }  
 
    public void b() {  
        a();  
    } 
}

public class TestGet2 extends TestGet {  
 
    public void a() {  
          
        System.out.println("bbb");  
    }  
 
    public static void main(String[] args) {  
        TestGet t = new TestGet2();  
        t.b();  
    } 

}

//打印结果是bbb

修改下代码

public class TestGet {
    public static  void a() {  
        System.out.println("aaa");  
    }  
 
    public void b() {  
        a();  
    } 
}

public class TestGet2 extends TestGet {  
 
    public static  void a() {  
          
        System.out.println("bbb");  
    }  
 
    public static void main(String[] args) {  
        TestGet t = new TestGet2();  
        t.b();  
    } 

}


//打印出来什么呢


结果是aaa


为什么呢?原因就在静态方法不存在多态性。是TestGet 的就是TestGet 的,不会是TestGet2的静态方法。此外static方法不存在子类覆盖父类。他们属于类本身所有对象所共享。
分享到:
评论

相关推荐

    Java面向对象的3大特征之多态

    向上转型是自动的,子类对象赋值给父类引用时发生。向下转型则是将父类引用强制转换为子类类型。在多态中,向下转型是可选的,主要用于访问子类特有方法。 多态的动态绑定指的是在运行时,调用方法会与对象的实际...

    Java基础测试题+答案.docx

    多态有三种主要形式:子类对象赋值给父类变量、父类作为方法的形参以及父类作为返回值。 7. **封装**:封装是将数据和方法捆绑在一起,对外只提供接口,隐藏内部实现细节。通过访问控制修饰符(private、default、...

    实验二:java多态性.rar

    - **向上转型**:将子类对象赋值给父类引用,这样就可以通过父类引用调用子类重写的方法,实现多态。 在实际编程中,多态性带来了诸多优势: - **代码复用**:父类引用可以操作所有子类对象,减少了重复代码。 - *...

    Java 开发人员调度软件项目 (java基础编程总结项目)+javaBean+测试代码+数组知识+数据结构+继承+.pdf

    - 向上转型是指将子类对象赋值给父类引用,而向下转型则是将父类引用转换为子类对象。这两种转换在处理继承关系时十分常见。 以上是这个Java项目中涉及的主要编程概念,它们在实际的软件开发中扮演着重要角色。这...

    精品资料(2021-2022年收藏)面向对象技术Java期末复习试卷四.docx

    4. 类型转换与继承:在Java中,子类是父类的实例,因此可以将子类对象赋值给父类引用。题目中,`Circle`是`GeometricObject`的子类,所以`(circle instanceof GeometricObject)`和`(object instanceof ...

    Java——多态与接口.rar

    向上转型(Upcasting)是指将子类对象赋值给父类引用,这种转换是安全的,因为子类具备父类的所有属性和方法(包括抽象方法,但必须在子类中实现)。这在多态场景下非常有用,比如在集合中存储不同类型的对象,只要...

    实验报告8.doc

    3. 编写一个测试类,如`MainTest`,在该类中声明一个`Vehicle`类型的变量,然后实例化`Car`和`Bicycle`对象,将这些子类对象赋值给父类类型的变量。 4. 调用父类类型的变量的`move()`方法,由于多态性,实际执行的是...

    专题讲座资料(2021-2022年)大工秋Java程序设计在线作业.docx

    - 向上转型(子类对象赋值给父类引用)无需强制转换,但向下转型需要。 12. **Java语言特性**: - Java是大小写敏感的,变量名区分大小写。 - `Math.max()`和`Math.min()`函数用于求最大值和最小值,`Math.max(2...

    实验九-子类和继承1.doc

    当创建子类对象时,首先会调用父类的构造器来初始化父类的部分,然后才是子类自己的构造器。例如,`Child`类的构造器中使用`super("Child")`调用了`Base`类的构造器。 2. **访问控制权限下的继承**: 不同的访问...

    最新企业java笔试面试题大全.pdf

    在调用方法时,若父类引用指向子类对象且子类重写了父类的方法,将调用子类的重写方法。 数据库和JDBC知识点: 1. JDBC(Java Database Connectivity)的使用。JDBC是一种用于执行SQL语句的Java API,可以通过JDBC...

    Java面向对象测试题一.doc

    `是错误的,因为不能将父类对象赋值给子类引用。 7. **继承**: - 子类可以继承一个基类,并且可以作为其他类的基类。 - 子类不能通过`this`关键字访问父类的私有属性,`private`访问修饰符限制了这种访问。 - ...

    java中子类继承父类,程序运行顺序的深入分析

    ` 创建了一个子类对象,并用父类引用指向它。即使如此,父类的构造方法和静态块仍然会按顺序执行,因为这是继承的固有特性。 总结一下,Java中子类继承父类时的程序运行顺序是: 1. 父类的静态变量和静态块 2. ...

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    Java 支持向上转型,即子类对象可以赋值给父类引用;但向下转型需要确保子类对象确实是该子类的实例。因此,在 `<插入代码>` 处,只有 `p0 = p1;` 和 `p0 = p3;` 是合法的,因为 `p1` 和 `p3` 都是 `ClassB` 类型的...

    2.Java面向对象知识测试-含答案[整理].pdf

    `是正确的,但反之则错误,因为子类对象不能直接赋值给父类引用。 12. 抽象类的特性:抽象类可以包含抽象方法,也可以包含非抽象方法,但至少有一个抽象方法的类必须声明为抽象类,即包含`abstract`关键字。抽象类...

    东北农业大学20春《数据库概论及实例》在线测试题答案.docx

    如果p已经初始化了一个对象,那么将其赋值给子类对象c(c=p),这种操作在Java等语言中是允许的,因为子类对象可以接受父类对象的引用,体现了多态性。因此,这个语句是正确的,答案是A:正确。 3. 停止等待协议: ...

    面向对象练习

    4. 编写测试类,使用父类引用指向子类对象,调用重写的方法,观察运行时多态的效果。 通过这些练习,你将更深入地理解Java中的面向对象编程,并能够更好地应用这些概念到实际项目中。在实践中,不断探索和理解这三...

    面向对象(一).docx

    3. 多态性:多态性允许父类引用指向子类对象,使得在编译时使用父类类型,而在运行时调用子类的方法。这种特性使得程序更加灵活,能够在不修改原有代码的基础上添加新的功能。多态主要体现在方法的重写上,子类可以...

    Inheritance-Lab-Java-2:使用继承练习练习

    6. **向上转型和向下转型**:向上转型(即子类对象赋值给父类引用)是自动的,它允许你使用父类引用调用子类继承的方法。向下转型(将父类引用转换为子类对象)则需要显式进行,但需要注意的是,只有真正的子类对象...

Global site tag (gtag.js) - Google Analytics