`
awed
  • 浏览: 34029 次
  • 性别: 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 中方法的重载与覆盖

    方法的重载与覆盖 发生重载的条件: 1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), ...

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

    JAVA方法覆盖与重载的区别

    java中函数重载与覆盖例子

    java中函数重载与覆盖的例子,person类和teacher类

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

    Java语言中的覆盖重载和多态,方法的多态,类型的多态,多态的优点,覆盖(override)识别标志,方法的重载,构造函数的重载,重载的好处,重载与覆盖的比较,编译时多态和运行时多态

    java学习笔记 继承 重载 覆盖

    java相关知识的学习笔记,个人整理,里面涵盖:继承,接口,重载,覆盖,final等等的知识点

    java基础_关于重载的应用

    java 对重载的应用,区别 重载 重写的 区别。让大家认识重载

    Java方法重载+Java重载案例

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

    java中重载与重写

    重载与重写的区别,详细描述了java中重载与重写的区别。

    彻底学习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方法继承、方法重载、方法覆盖总结。比较具体细致地描述他们之间的连系与区别,需要的同学可以看看。

    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 中,同一个类中的2个或2...方法重载是Java 实现多态性的一种方式。如果你以前从来没有使用过一种允许方法重载的语言,这个概念最初可能有点奇怪。但是你将看到,方法重载是Java 最激动人心和最有用的特性之一。

    JAVA的重载和覆盖(论文)

    JAVA的重载和覆盖(论文)

    java中方法重载内存分析

    本例是java中一个方法重载的程序,并通过这个具体程序来分析其中的内存分配过程,适合初学java,对java中内存分配不熟悉的人学习。

    java类重载,可以用于热更新

    这个是用来java中类的重载的,可以拟补java作为静态语言的一些问题

    Java的重载和重写

    对Java中方法的重载和重写的具体描述,有利于区分方法的重载和重写

    重载,重写,覆盖,多态

    重载,重写,覆盖,多态的深刻剖析,具体分析了重载,重写,覆盖,多态之间的区别

Global site tag (gtag.js) - Google Analytics