`
simon1006
  • 浏览: 1118 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一个方法重写的问题

阅读更多
1、public class SupClass {
    public SupClass() {
    }
    public void print(){
        System.out.print("sup");
    }
   
}
2、public class SubClass extends SupClass{
    public SubClass() {
    }
    protected void print(){
        System.out.print("sub");
    }
    public static void main(String[]  args){
        SubClass subClass=new SubClass();
        subClass.print();
    }
}
答案 A、编译通不过; B、编译能通过,运行报错; c、打印出sup; d、打印出sub;

我选了 A,面试官说D;回来专门测试了下,的确编译通不过,提示:
"SubClass.java": print() in com.SubClass cannot override print() in com.SupClass; attempting to assign weaker access privileges; was public at line 6, column 5

这种情况怎么办?
分享到:
评论
7 楼 zfwnana 2008-06-16  
- -~!看开点吧~,就算你面试通过了,你也要想想要是这面试官是你同事,你工作会怎样?虽然面试题实际运用中不多,但至少说明了这公司面试题准备不充分吧.

难道还有BT的?故意出错,看谁指出他的错误?然后录取?(- -~!应该没这么BT)
6 楼 偷听女孩心 2008-06-15  
面你的人基础很糟糕
5 楼 insiku 2008-06-14  
看你对这家公司是否在意
技术面试的面试官技术都不咋样 进去就怕被穿小鞋
4 楼 simon1006 2008-06-14  
后来发了份邮件过去,去提这事,真的要挂,也不能不明不白!
3 楼 wolfbrood 2008-06-14  
深秋小雨 写道
wolfbrood 写道
子类如果要重写父类的方法,那么子类作用域不能小于父类,也就是说如果父类是public,那么子类必须是public,不能是别的,这样就做到了在调用父类的地方都能调用子类,如果子类的修饰符不是public,那么就会有问题。
比如:
SupClass sup = new SupClass();
sup.print();
sup = new SubClass();
sup.print();
按照继承关系,SubClass是SupClass的子类,那么可以调用父类print方法的地方都可以调用子类的print。如果修饰符不是public,那么上面这个代码就不能运行,也就违背继承原则,父类就不是子类的一个子集。

楼主问的应该是:笔试的时候,我答对了,但考官搞错了,怎么办?
那考官自己的基础都不好,你还在乎这家公司、在乎这次面试么?我觉得找一个好的技术团队很重要,工资、公司大小之类的都是次要的。

面试完了之后就别管那么多了,继续做自己的事。想多了也没用。好比有人和我说java里面不用声明变量就可以直接用,好比javascript,我当时就无语。
2 楼 yuan 2008-06-14  
wolfbrood 写道
子类如果要重写父类的方法,那么子类作用域不能小于父类,也就是说如果父类是public,那么子类必须是public,不能是别的,这样就做到了在调用父类的地方都能调用子类,如果子类的修饰符不是public,那么就会有问题。
比如:
SupClass sup = new SupClass();
sup.print();
sup = new SubClass();
sup.print();
按照继承关系,SubClass是SupClass的子类,那么可以调用父类print方法的地方都可以调用子类的print。如果修饰符不是public,那么上面这个代码就不能运行,也就违背继承原则,父类就不是子类的一个子集。

楼主问的应该是:笔试的时候,我答对了,但考官搞错了,怎么办?
那考官自己的基础都不好,你还在乎这家公司、在乎这次面试么?我觉得找一个好的技术团队很重要,工资、公司大小之类的都是次要的。
1 楼 wolfbrood 2008-06-14  
子类如果要重写父类的方法,那么子类作用域不能小于父类,也就是说如果父类是public,那么子类必须是public,不能是别的,这样就做到了在调用父类的地方都能调用子类,如果子类的修饰符不是public,那么就会有问题。
比如:
SupClass sup = new SupClass();
sup.print();
sup = new SubClass();
sup.print();
按照继承关系,SubClass是SupClass的子类,那么可以调用父类print方法的地方都可以调用子类的print。如果修饰符不是public,那么上面这个代码就不能运行,也就违背继承原则,父类就不是子类的一个子集。

相关推荐

    方法重载和方法重写

    子类可以提供一个与父类中同名且同签名(包括返回类型和参数列表都相同)的方法,这就是方法重写。目的是为了在子类中扩展或修改父类的功能。方法重写只关注方法的签名和返回类型,而不关注访问修饰符。以下是一个...

    JAVA中的方法重写与方法重载区别

    方法重写(Override)是指在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,这样可以重写父类的方法。在方法重写中,子类可以对父类的方法进行修改或扩充...

    静态(static)方法重写(override)

    在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时根据对象的实际类型来确定调用哪个版本的方法,这正是多态性的基础...

    Java 继承和方法重写

    方法重写则是继承机制中一个关键的特性,允许子类对父类的方法进行定制化,以满足特定需求。 **一、Java 继承** 1. **定义与语法**: Java 中的继承使用 `extends` 关键字实现。例如,如果 `Animal` 是一个类,`...

    两种重写方法的内存机制

    在编程语言如C#中,`new`和`override`关键字用于处理类的继承和方法重写,这两种机制涉及到内存管理和多态性。本文将详细解释这两种重写方法的内存机制,并通过实例来阐述它们的区别。 首先,让我们回顾一下继承...

    java子类重写父类的方法.doc

    重写规则之六:如果一个方法不能被继承,则不能重写它 Java 中,如果父类的方法是私有的,子类不能重写该方法。例如,如果父类有一个私有方法 `private void eat() { ... }`,子类不能定义一个公有方法 `public ...

    重写window.alert方法

    在JavaScript中,对象的方法是可以被替换的,因此我们可以在全局作用域内定义一个新的`alert`函数,让它执行我们自定义的操作。以下是一个简单的例子: ```javascript (function() { var originalAlert = window....

    C# Equals 和 GetHashCode 方法重写

    ### C# Equals 和 GetHashCode 方法重写 在C#编程中,`Equals` 和 `GetHashCode` 方法是非常重要的成员方法,它们对于确保对象的正确比较以及高效地存储和检索对象至关重要。这两个方法通常需要在自定义类中进行...

    关于重写equals,hashcode以及compareTo方法!

    equals()方法是Object类中的一个方法,它用于比较两个对象是否相等。然而,它的默认实现是比较对象的引用(地址),而不是比较对象的实际内容。因此,在某些情况下,我们需要重写equals()方法,使其比较对象的实际...

    重写equals方法

    "equals 方法重写详解" 在 Java 中,equals 方法是一个非常重要的方法,它用于判断两个对象是否相等,而不是判断两个对象的引用是否相同。在 Object 基类中,equals 方法的实现是使用“==”操作符来比较对象的引用...

    方法重写.zip

    在Java编程语言中,"方法重写"(Method Overriding)是面向对象特性的一个关键概念。它发生在子类继承父类时,子类可以提供一个与父类中相同签名的方法,但实现可能不同。这种方法重写允许子类扩展或定制父类的功能...

    equals方法的重写.docx

    ### equals方法重写知识点解析 #### 一、equals方法简介 `equals`方法是Java语言中Object类的一个重要成员方法,其默认实现是比较两个对象的内存地址是否相同(即是否为同一个对象)。为了使对象之间能够基于内容...

    C#重写重载与多态

    在C#中,为了能够重写一个方法,基类中的方法必须声明为`virtual`或`abstract`,而子类中相应的方法则需使用`override`关键字。例如: ```csharp public class BaseClass { public virtual void MyMethod() { ...

    url重写方法DLL

    4. **重写规则(Rewrite Rules)**:每个规则由一个或多个条件和一个动作组成,定义了URL如何被转换。 使用`UrlRewriter.dll`和`UrlRewriter.ini`,开发者可以实现以下功能: 1. **SEO优化**:创建更易于理解和...

    重写toString和equals方法

    Java 对象的toString和equals方法重写 在 Java 中,每个对象都继承自 Object 类,而 Object 类中定义了两个重要的方法:toString() 和 equals()。这两个方法都是非常重要的,它们分别用于对象的字符串表示和对象...

    10.java方法的重写.zip

    10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法的重写.zip10.java方法...

    url重写的方法~很详细

    例如,在ASP.NET中可以创建一个继承自`HtmlForm`的自定义表单类,覆盖其`RenderAttributes`方法来实现特定的重写逻辑。 综上所述,URL重写是一项非常实用的技术,可以帮助开发者更好地管理网站结构、提高用户体验和...

    方法重写(覆盖)

    方法重写,也称为方法覆盖,是面向对象编程的一个重要特性。在Java中,当子类继承父类时,它可以重写父类中已存在的方法,以实现不同的功能或者优化原有功能。重写允许子类根据自身的需求对父类的行为进行定制。 1....

    重写equals和hashcode方法_equals_重写equals和hashcode方法_

    例如,如果有一个名为Person的类,包含firstName和lastName属性,我们可以这样重写 `equals()`: ```java @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || ...

    jsp的一个url重写

    在探讨“jsp的一个url重写”这一主题时,我们深入解析了达内郑州中心老师分享的关于URL重写的实现方式,这不仅展示了JSP技术在动态网页开发中的灵活性,也揭示了URL重写在提高用户体验、优化SEO以及简化URL结构方面...

Global site tag (gtag.js) - Google Analytics