`
awed
  • 浏览: 34706 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

[恶补JAVA]关于覆盖与重载

    博客分类:
  • J2SE
阅读更多
JAVA不允许多重继承,但允许间接继承,如C继承了B,同时B又继承了A那么就拥有类A和B的属性及方法。
以前在学习JAVA基础的时候,总以为单一个类继承了另一个类的时候,继承类
就拥有了被继承类的除private关键字修饰外的所有方法和属性。
其实不然,继承它可以分为两种情况:
一、 当继承类和被继续类位于同一包中时。
子类会继承父类中的public 、protected 和默认访问级别的成叫变量和方法。
二、 当继承类和被继续类不在同一包中时
子类会继承父类中的public 、protected 访问级别的成叫变量和方法。
如以下两个类,Base和Sub,base为Sub的父类。
在同一包时:
package base;

public class Base {
    public int publicBase = 1 ;         //public访问级别
    private int privateBase = 1;        //private访问级别
    int defaultBase = 1;                //默认访问级别
    
    protected void protecteMethodofBase() {  //protected访问级别
    
    }
}

package base;


public class Sub extends Base {
    protected void protecteMethodofSub() {  //protected访问级别
        System.out.println(publicBase);
        System.out.println(privateBase);//报错,私有的不能继承。
        System.out.println(defaultBase);
        
        protecteMethodofBase();
    }
    
    public static void main(String args[]){
        Sub sub = new Sub();
        sub.protecteMethodofSub();
    }
}


只有私有的方法不能继承。

在不同的包时:我们把Sub类的包改为sub时
package sub;

import base.Base;


public class Sub extends Base {
    protected void protecteMethodofSub() {  //protected访问级别
        System.out.println(publicBase);
        System.out.println(privateBase);//报错,私有的不能继承。
        System.out.println(defaultBase);//报错,不在同一包下默认级别不能继承。
        
        protecteMethodofBase();
    }
    
    public static void main(String args[]){
        Sub sub = new Sub();
        sub.protecteMethodofSub();
    }
}


方法重载(Overload)
类的同一种功能可以有多种方法,当一个类中多少方法具有相同的方法名,却含有不同的方法参数则为方法的重载(Overload)如:
	Public void getString(String str){
		return str ;
}

Public void getString(String str,String str1){
		return str + str1;
}


当从父类中继承了某个方法,如果两个方法名相同,却有不同参数时,可以说一个方法是另一个方法的重载。
重载必须满足以下条件。
1、 方法名相同。
2、 方法的参数,个数,顺序至少有一个不同。
3、 方法的返回类型可以相同,也可以不相同。


方法的覆盖(Override)
如果子类中,定义的一个方法,其名称、返回类型、以及参数与父类中的某个方法相匹配,则该子类重写的父类的方法。
覆盖方法必须满足以下条件。
1、 子类方法的名称、参数、返回类型必须与父类方法一致。
2、 子类方法不能缩小父类方法的访问权限。
3、 子类方法不能抛出比父类方法更多的异常。也就是说子类方法抛出的异常必须与父类方法抛出的异常相同或者是子类方法抛出的异常是父类抛出异常的子类。
4、 方法的覆盖只能存在与父类与子类,同一类中只存在方法的重载,不存在方法的覆盖。
5、 父类中的私有方法不能补覆盖。
6、 父类中的非抽象方法,可以被覆盖为抽象方法。


this与super的区别
this表示调用当前类的属性或方法,也可以用this当前类本身。
super表示调用父类的方法或属性。
父类中的成员变量或方法为私有的(private)时,super不能调用到。
分享到:
评论

相关推荐

    Java 中方法的重载与覆盖

    ### Java中的方法重载(Overloading)与方法覆盖(Overriding) #### 方法的重载(Overloading) 在Java中,方法重载允许我们定义多个同名的方法,但这些方法之间必须具备不同的特征来区分它们。这有助于提高代码的...

    JAVA方法覆盖与重载的区别.doc

    Java中的方法重载(Overloading)和方法覆盖(Overriding)是面向对象编程中的两个重要概念,它们在处理多态性方面发挥着关键作用。理解这两者的区别对于编写高效的Java代码至关重要。 首先,我们来看方法重载。...

    java中函数重载与覆盖例子

    在"Java函数重载与覆盖"的例子中,我们可能会看到如下代码: ```java public class Person { public void sayHello(String name) { System.out.println("Hello, " + name); } public void sayHello(int age) ...

    Java语言中的 覆盖重载和多态

    Java语言中的覆盖(Override)和重载(Overload)以及多态(Polymorphism)是面向对象编程的重要概念,它们是实现代码复用和灵活性的关键。 **多态性(Polymorphism)** 多态性是Java中一种允许一个接口有多种实现的方式。...

    java学习笔记 继承 重载 覆盖

    Java编程语言的学习涉及众多核心概念,本篇笔记主要探讨了几个关键知识点:继承、重载和覆盖。首先,我们从Java环境配置开始,确保能够正确地运行Java程序。在Windows系统中,需要设置环境变量PATH,指向JDK安装目录...

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的概念。它们虽然只有一字之差,但其实质却大相径庭。理解这两者的不同对于深入掌握Java语言至关重要。 ### 一、重载(Overloading...

    Java方法重载+Java重载案例

    Java方法重载+Java重载案例+Java重载 Java方法重载+Java重载案例+Java重载 Java方法重载+Java重载案例+Java重载 Java方法重载+Java重载案例+Java重载

    Java方法继承、方法重载、方法覆盖总结

    ### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...

    Java重写重载线程

    ### Java中的方法重载与重写以及线程概念详解 #### 一、方法重载(Overloading) 在Java中,**方法重载**是指在同一个类中定义多个具有相同名称但参数列表不同的方法。这里提到的“参数列表不同”不仅包括参数的...

    java中的方法重载和覆盖的区别宣贯.pdf

    "Java中的方法重载和覆盖的区别" Java中的方法重载和覆盖是两个常见的概念,但很多开发者容易混淆这两个概念。在Java中,方法重载(Overloading)和方法覆盖(Overriding)都是实现多态性的手段,但它们之间有着...

    彻底学习Java语言中的覆盖和重载

    彻底学习Java语言中的覆盖和重载

    63.java方法重载.zip

    63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java方法重载.zip63.java...

    java中方法重载内存分析

    在Java编程语言中,方法重载(Overloading)是一种重要的多态性实现方式,它允许我们在同一个类中定义多个同名但参数列表不同的方法。理解方法重载的内存分配过程对于初学者来说至关重要,因为这有助于深入理解Java...

    JAVA的重载和覆盖(论文)

    JAVA中的重载(Overload)和覆盖(Override)是面向对象编程中两个核心概念,尤其在多态性的体现上扮演着重要角色。这两者虽然在名称上相似,但在实际应用和概念理解上有着本质的区别。 ### 重载(Overload) 重载是在同...

    Java中重载和重写总结

    Java 中重载和重写总结 Java 中的重载(Overloading)和重写(Overriding)是两个非常重要的概念,它们都是多态性的体现形式。 一、Java 中的重载(Overloading) Java 中的重载是指在同一个类中可以创建多个...

    Java重写与重载(区别与用途)

    我根据我的理解来谈谈Java中重写方法与重载方法的区别。  重写  Java 中重写又叫覆盖,主要是指继承(extends)父类或者实现(implements)接口时将父类或者接口中已经存在的方法进行重新定义。重写的方法在父类...

    64.java方法重载特点.zip

    64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载特点.zip64.java方法重载...

    65.java方法重载练习.zip

    65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载练习.zip65.java方法重载...

    Java重写和重载概念及区别梳理

    在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...

    重载,重写,覆盖,多态

    ### 重载、重写、覆盖与多态的深刻剖析 在面向对象编程语言中,如Java、C#等,重载(Overloading)、重写(Overriding)、覆盖(也称为重写)以及多态(Polymorphism)是几个非常重要的概念。它们之间既有关联又有...

Global site tag (gtag.js) - Google Analytics