重写(覆盖)

对父类同名的方法的重写、覆盖

方法的重写 ---(方法的重载) 修饰符 返回值类型 方法名 (参数列表){}

1.前提:有子类继承父类
 2.子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类的方法重写(override overwrite)、覆盖、覆写。
 3.重写的规则:

   1)  要求子类方法的“返回值类型 方法名 (参数列表)”与父类的方法一样
   2)  子类方法的修饰符不能小于父类方法的修饰符
   3) *若父类方法抛异常,那么子类方法抛的异常类型不能大于父类的。
   4) *子父类的方法必须同为static或同为非static的

package com.atguigu.java1;
class A{

}

public class Student extends Person{
//public class Student extends Person,A{
//    private String name;
//    private int age;
    private String schoolName;

    public Student(){

    }
    public Student(String name,int age){
//        this.name = name;
//        this.age = age;
        this.setName(name);
        this.setAge(age);
    }

//    public String getName() {
//        return name;
//    }
//    public void setName(String name) {
//        this.name = name;
//    }
//    public int getAge() {
//        return age;
//    }
//    public void setAge(int age) {
//        this.age = age;
//    }
//
//    对父类同名的方法的重写、覆盖
    public void eat(){
        System.out.println("应该多吃有营养的");
    }
    public void walk(){
        System.out.println("背着书包蹦蹦跳跳的走路");
    }
    public void info(){
        eat();
        //System.out.println("name:" + name);
        System.out.println("我是一个学生");
    }
    //不是对父类私有的sleep()方法的重写。
    private int sleep(){
        return 0;
    }

}
时间: 2024-11-22 21:57:35

重写(覆盖)的相关文章

javascript原型的改动与重写(覆盖)区别

每一个JavaScript函数都有prototype属性(javascript对象没有这个属性),这个属性引用了一个对象,这个对象就是原型对象.javascript同意我们改动这个原型对象. 改动有2种方式: 方式1:在原有的原型对象上添加属性或者方法 function Person() { } Person.prototype.add = function(){ alert(this.name); }; Person.prototype.name = "aty"; var p1 =

javascript原型的修改与重写(覆盖)差别

每个JavaScript函数都有prototype属性(javascript对象没有这个属性),这个属性引用了一个对象,这个对象就是原型对象.javascript允许我们修改这个原型对象.修改有2种方式: 方式1:在原有的原型对象上增加属性或者方法 function Person() { } Person.prototype.add = function(){ alert(this.name); }; Person.prototype.name = "aty"; var p1 = ne

console.log 被重写覆盖以后如何恢复

有时候一些项目中会使用类似如下的方式覆盖掉console对象: var console = {}; console.log = function(){}; console.info = function(){}; window.console = console; 这个时候如果需要在控制台调试一些接口(如ajax请求),就不方便使用console来显示一些返回数据了. 找了一下,发现可以使用如下方式暂时恢复console的功能. (function(){ var iframe = documen

类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别

https://blog.csdn.net/ranxiaoxu123/article/details/52291385 https://www.cnblogs.com/renyuan/archive/2013/06/08/3127562.html 原文地址:https://www.cnblogs.com/Kiven5197/p/8934207.html

java的重写、重载、覆盖的区别

多态性 通过继承,一个类可以用作多种类型:可以用作它自己的类型.任何基类型,或者在实现接口时用作任何接口类型.这称为多态性 重载 每个类型成员都有一个唯一的签名.方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成.只要签名不同,就可以在一种类型内定义具有相同名称的多种方法.当定义两种或多种具有相同名称的方法时,就称作重载.即重载时相同名称成员的参数列表是不相同的(参数顺序和类型). 继承,重写和隐藏成员 (重写 = 覆盖) 派生的类型继承其基本类型的所有成员:也就是说,这些成员是在派

类中的同名函数关系,重载,覆盖/重写,隐藏

对于类中的同名函数,重载,覆盖/重写,隐藏 C++特性,不是类亦可以实现重载,与virtual无关联.重载:同一类域抑或无类域,相同函数名,不同形参个数或类型:由形参决定调用哪个函数实现.同类域同名函数相同形参会引起编译错误. virtual修饰函数需要相同的返回值与形参类型,多态特性则需要该修饰符才能体现. 重写/覆盖:基类与派生类关系,同样的函数名,相同形参个数与类型,基类函数有virtual修饰:派生类执行派生类函数而不是基类函数实现,指针与引用的多态体现出来了,即基类指针或引用可根据指向

Java基础-四要素之一《多态》-重写(Overriding,覆盖)-重载(Overloading)

多态性: Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义.调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法 Java的方法重写,就是各子类对父类中的方法可能有其他特殊定义,需要将父类中的方法的内容重写计算一边.方法名,返回类型,方法参数必须相同的情况下,即为重写 多态性是面向对象编程的一种特性,和方法无关,简单说,就是同样的一个方法能够根据输入数据的不同,做出不同的处理,即方法的重载——有不同的参数列表(静态多态性) 而当子

JAVA基础之重载,覆盖/重写,多态

重载发生在同一个类中 特点是两同一不同,类相同,方法名相同,参数不同.其他项与重载无关. 在调用方法的时候,会根据方法名的不同判断具体调用哪个方法. 创建一个Driver类,类中实现了对driver方法的重载操作. public class Driver { //实现了重载操作 public void drive(){ System.out.println("No Parameter"); } public void drive(String driver){ System.out.p

C++中重载、重写(覆盖)和隐藏的区别

转载自:https://blog.csdn.net/zx3517288/article/details/48976097 基本概念: 重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. 1 class A{ 2 public: 3 void test(int i); 4 void test(double i);//overload 5 void test(int i, double j);//over

C++重载、重写(覆盖)、隐藏

类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别? 答:分别简单讲述一下函数重载,函数覆盖,函数隐藏的概念与特征: 函数重载:重载函数通常用来命名一组功能相似的函数 1.函数要在相同的类域 2.函数的名字要相同 3.函数的参数列表或返回值不同 函数覆盖:覆盖是指派生类函数覆盖基类函数 1.函数是要在不同的类域 2.两个函数的名称相同 3.基类函数必须是虚函数 3.两个函数的参数相同 函数隐藏:指派生类的函数屏蔽了与其同名的基类函数 1.两个函数在不同的类域 2.函数名称相同 3.函数参数不同