24. java面向对象 - 方法重写

一、方法的重写

1. 定义

? 在子类中可以根据需要对从父类中继承来的方法进行改造,也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。

2. 要求

? (1) 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表

? (2) 子类重写的方法的返回值类型不能大于父类被重写的方法返回值类型

? (3) 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限

  • 子类不能重写父类中声明为private权限的方法

? (4) 子类方法抛出的异常不能大于父类被重写方法的异常

3. 注意

? 子类与父类中同名同参的方法必须同时声明为非static的,或者同时声明为static(不是重写)。因为static方法是属于类的,子类无法覆盖子类的方法。

二、super关键字

1.super关键字使用
(1)super理解为父类的
(2)super可以用来调用:属性、方法、构造器
2.super使用
(1)在子类的方法或构造器中,通过"super.属性"或"super.方法"的方式,显示的调用父类中声明的属性或方法。但通常情况下省略super
(2)特殊情况,当子类和父类中定义了同名属性,子类要调用父类的属性,则必须使用super.属性
(3)特殊情况,重写方法,要调用父类中定义的方法,使用super.方法()
(4)super在构造器中使用:super(形参列表);调用父类中指定的构造器
(5)在构造器首行,没有显示的声明this(形参列表)或super(形参列表);默认调用父类中空参构造器super()

1. super调用父类构造器

public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void eat() {
        System.out.println("父-吃饭");
    }

    public void sleep() {
        System.out.println("父-睡觉");
    }

}
public class Student extends Person {
    private String major;

    public Student(String name, int age, String major) {
        //super调用父类构造器
        super(name, age);
        this.major = major;
    }

    public void show(){
        System.out.println(name + age + major);
    }
}

class StudentTest {
    public static void main(String[] args) {
        Student stu = new Student("tom", 20, "IT");
        stu.show();
    }
}

原文地址:https://www.cnblogs.com/hq82/p/12237898.html

时间: 2024-11-07 19:09:13

24. java面向对象 - 方法重写的相关文章

Java面向对象-方法的重载

Java面向对象-方法的重载 所谓方法的重载, 类里面有两个或者多个重名的方法,但是方法的参数个数.类型.顺序至少有一个不一样,这时候局构成方法重载: 上代码: 1 package com.java1234.chap03.sec03; 2 3 public class Demo01 { 4 5 int add(int a,int b){ 6 System.out.println("方法一"); 7 return a+b; 8 } 9 10 /** 11 * 方法的重载,参数个数不一样

Java面向对象-方法的值传递和引用传递

Java面向对象-方法的值传递和引用传递 方法的值传递: 值传递 在方法里改变变量的值 作用范围仅仅是方法里 对外面不影响: 上代码: 1 package com.java1234.chap03.sec03; 2 3 public class Person { 4 5 void speak(int age){ 6 System.out.println("我今年"+age+"岁了"); 7 age=24; // 作用范围是方法里 8 } 9 10 public sta

Java之方法重写、方法重载、多态

Java之方法重写.方法重载.多态博客分类: java语言Java重写重载多态 一.方法重写(Override) 子类可以重写父类的方法. 方法的返回值类型.参数类型.参数个数都不能改变,只能重写方法体. 方法的重写规则 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低. 例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected. 解释:用于多态(父类引用子类对象). 声明

Java面向对象-方法的定义及简单使用

Java面向对象之方法 方法是对象的一部分,也称为行为: 先来一个简单实例: 1 package com.java1234.chap03.sec03; 2 3 public class Person { 4 5 void speak(){ 6 System.out.println("我是张三"); 7 } 8 9 public static void main(String[] args) { 10 Person person=new Person(); 11 person.speak

Java中方法重写的应用

方法重写的应用 当子类需要父类的功能,而功能的主体子类还有自己特有的内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类自己特有的内容. 1 /* 2 方法重写:子类中出现了和父类中方法声明一模一样的方法(方法名.参数列表和返回值类型都一样),也被称为方法覆盖.方法复写. 3 4 方法重载:本类中出现的方法名一样,参数列表不同,与返回值无关的方法. 5 6 子类的成员方法名称和父类中的成员方法名称一样时,这个怎么访问呢? 7 通过子类对象访问一个成员方法的查找顺序: 8 1.在子

java的方法重写 ,多态和关键字 instanceof和final

package cn.pen; /*final 是一个java的关键字,用于修饰局部变量.属性.方法.类,表示最终的意思. final修饰类表示最终类,无法被继承.public final class Penguin{} final修饰符方法,方法就不能被重写.所以final修饰的是最终子类或最终类 final 修饰属性,经常和static搭配使用,形成静态常量.静态常量不能被改变 修饰变量final 修饰基本数据类型 ,表示a中的内容(值)不能被改变final int a = 10; fina

Java中方法重写的两个面试题

1:方法重写和方法重载的区别?方法重载能改变返回值类型吗? 方法重写: 在子类中,出现和父类中一模一样的方法声明的现象.(包含方法名.参数列表和返回值类型都一样) 方法重载: 同一个类中,出现的方法名相同,参数列表不同,与返回值类型无关的现象. 方法重载能改变返回值类型,因为它和返回值类型无关. Override:方法重写 Overload:方法重载 2:this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用. this: 代表当前类的对象引用. super:代表父类存储空间

java中方法重写的规则

规则1:重写方法的不能比被重写的方法有更严格的访问限制 规则2:相同的方法名,相同的参数列表,相同的返回值 规则3:重写方法不能抛出比被重写方法声明更广的异常,可以抛出范围更小的或不抛出异常 规则4:不能重写被final修饰的方法 规则5:如果一个方法不能被继承,则不能被重写.例如:构造器不能被继承,所以不能被重写.或者是父类声明为private的方法

Java面向对象——方法与封装

封装 什么是封装: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 如何实现封装: 修改属性的可见性,设为private. 建立共有的get/set方法,用于属性读写. 在get/set方法中加入属性的控制语句,对属性的合法值进行判断 便于使用者正确使用系统,防止错误修改属性 有助于系统之间的松耦合,提高系统独立性 提高软件的可重用性 降低了构建大型系统的风险 创建封装类 class Person { private String name