`
atmosphere
  • 浏览: 14753 次
  • 性别: Icon_minigender_1
博客专栏
807a8b01-317a-34bf-9d0f-011a7c5a74b4
javase7官方教程翻译...
浏览量:11092
社区版块
存档分类
最新评论

JAVASE官方教程:继承之重写和隐藏方法(7)

阅读更多

实例方法

一个与父类中的实例方法有相同标签(名字,参数个数和类型)和返回类型的子类实例方法会重写父类中的方法.

 

子类重写的方法具有修改对象的行为的能力,他也可以返回被重写方法返回类型的子类型.这叫做协变返回类型(covariant return type).

 

在重写某个方法时,你可能想用@Override注解来告诉编译器你打算重写父类中的某个方法.这时候,如果编译器不能在父类中找到这样的方法,将会产生一个错误.


类方法

如果子类中定义了一个类方法与父类中的某个类方法具有相同的标签,那么子类中的方法隐藏(hides)了父类中的方法.

 

重写和隐藏的区别有重要的意义.调用重写的方法是子类中的版本,调用隐藏的方法的版本依赖于你是用子类还是用父类来调用的.让我们看一个例子:

public class Animal {
    public static void testClassMethod() {
        System.out.println("The class method in Animal.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance method in Animal.");
    }
}

public class Cat extends Animal {
    public static void testClassMethod() {
        System.out.println("The class method in Cat.");
    }
    public void testInstanceMethod() {
        System.out.println("The instance method in Cat.");
    }

    public static void main(String[] args) {
        Cat myCat = new Cat();
        Animal myAnimal = myCat;
        Animal.testClassMethod();
        myAnimal.testInstanceMethod();
    }
}

 

 

输出:

The class method in Animal.
The instance method in Cat.

 

修饰符

访问修饰符的权限只能比在父类中更大或者一样.例如,父类中有个protected实例方法,在子类中修饰符可以是public或protected,但不能是private.

 

小结

下面的表格总结了当你定义一个与父类中的方法居于相同的标签时会发生什么.

 

 

  父类中的实例方法 父类中的静态方法
子类中的实例方法 重写 编译时错误
子类中的静态方法 编译时错误 隐藏
1
2
分享到:
评论

相关推荐

    JavaSE基础教程(新手必读)

    JavaSE,全称为Java Standard Edition,是Java平台的核心部分,主要面向桌面应用和服务器端开发。对于初学者来说,理解并掌握JavaSE的基础知识是学习Java编程的第一步。本教程旨在帮助新手快速入门,理解Java语言的...

    JavaSE知识点梳理

    继承允许子类继承父类的属性和方法。 - **声明继承**:如`public class Car extends Vehicle {}`。 - **覆盖方法**:子类可以重写父类的方法。 ##### 3.12 多态 多态是指同一接口在不同类中表现出来的不同行为。 ...

    JAVASE教程

    - **继承**:子类可以继承父类的属性和方法。 - **向上转型**:将子类对象赋值给父类引用,不能访问子类特有成员。 - **向下转型**:将父类引用强制转换为子类类型,以便调用子类特有成员。 - **方法重写**:子类...

    JavaSE知识点总结(个人整理)(吐血推荐).doc

    * 多态的实现:继承和方法重写 * 多态的好处:提高程序的可维护性和扩展性 * 多态的弊端:父类的引用只能访问父类中有的成员而无法调用子类中特有的方法 五、抽象类和接口 抽象类和接口是JavaSE中两种特殊的类,...

    javase总结

    3. **继承**:学习单一继承和多层继承,理解super关键字的用法。 4. **多态**:掌握抽象类、接口、重写(Override)、重载(Overload)的概念。 5. **构造器**:了解构造函数的作用,掌握构造器的使用和重载。 四、...

    javase基础

    继承是面向对象编程的核心特性之一,它允许新类(子类)继承现有类(父类)的特性和行为。 **继承的特点:** - 子类如果实例化,那么父类的构造方法会被先调用。 - 子类可以调用父类的公有方法,但不能调用私有方法...

    北京圣思园JavaSE全部课堂笔记

    7. **多态**:多态是指同一种行为可以有不同的表现形式,它通过方法重写和接口实现来体现。多态提高了代码的灵活性和可扩展性。 8. **集合框架**:Java集合框架包括List、Set、Map等接口及其实现类,如ArrayList、...

    JavaSE.pdf

    - **封装**是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部状态,而是通过该类提供的公共方法来实现对内部状态的访问和操作。主要通过以下方式实现: - 属性私有化(`private`); - 提供...

    javase全套笔记.zip

    - **继承**:子类继承父类的所有属性和方法,允许在子类中添加新的属性或方法,也可以重写父类的方法。 - **多态**:指一个接口可以有多种不同的实现方式,或一个行为具有多个不同表现形式的能力。 - **抽象类与接口...

    Java面试题全集(上)JAVASE基础

    多态性主要分为两种形式:编译时多态(通过方法重载实现)和运行时多态(通过方法重写实现)。运行时多态是面向对象的关键特性之一,它允许程序在运行时根据实际对象的类型来选择合适的方法执行。例如,在定义一个...

    JAVASE阶段经典笔试题20道

    - 多态性在Java中主要通过继承和方法重写来实现。当父类引用指向子类对象时,可以调用被子类重写的方法。 9. **方法重载与重写**: - 方法重载(Overload):在同一类中,方法名相同但参数列表不同(参数个数、...

    JavaSE基础代码总结

    JavaSE是Java Standard ...综上所述,JavaSE基础代码的总结涉及到类的定义、封装、方法重载、继承、构造函数以及IO流的基本概念和使用方法。理解这些基础知识对于深入学习Java编程和开发高质量的应用程序至关重要。

    javase复习提纲

    - **继承**:子类可以继承父类的特性和行为。 - **多态**:允许子类重写父类的方法,以适应不同的行为需求。 **类和对象:** - **类**是对具有相似性质的一类事物的抽象表示,包含了该类事物的属性和方法。 - **...

    JavaSE知识点归纳总结.pdf

    重写是子类对父类方法的一种扩展,当子类继承父类并定义与父类相同的方法时(相同的返回类型、名称和参数列表),子类中的方法就覆盖了父类中的方法。在运行时,如果通过父类引用指向子类对象并调用这个方法,会...

    JavaSE笔试问答题.docx

    28. 重载是方法名相同但参数列表不同的方法,覆盖是子类重写父类的同名方法,隐藏是子类拥有和父类同名但非静态的字段。 29. 集合类如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等,主要方法包括...

    javaSE的学习代码资源

    3. 继承:继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用。子类可以添加新的功能或重写父类的方法。Java支持单继承,但可以通过接口实现多重继承的效果。 4. 多态:多态是指同一个...

    javase_day04_v1_pm_all.zip

    2. **封装**:封装是面向对象的三大特性之一,它涉及到隐藏对象的内部细节,只提供公共接口供外部使用。这有助于保护数据的安全性和提高代码的可维护性。 3. **继承**:这是另一个面向对象的关键特性,允许一个类...

    JavaSE知识点总结(个人整理).docx

    final 关键字可以修饰类、方法和变量,被 final 修饰的类无法被继承,方法无法被重写,变量为常量只能赋值一次。finally 关键字用于异常处理,可以在 try 语句块中使用,finally 块中的代码总是会被执行。finalize ...

    JavaSe总结JavaSe总结

    在JavaSE中,面向对象编程是其核心思想之一,主要包括封装、继承、多态和抽象四大特性。 1. **封装**:封装是将数据和操作数据的方法捆绑在一起,隐藏内部实现细节,对外提供公共接口。在Java中,通过访问控制符...

    2023年JavaSE知识点总结个人整理.docx

    final可以修饰类、方法和变量,被final修饰的类无法被继承,方法无法被重写,变量为常量只能赋值一次。finally是异常解决,和try、catch结合使用,可以添加也可以不添加,用于执行一些必须执行的代码,如释放资源等...

Global site tag (gtag.js) - Google Analytics