`
曹老英雄
  • 浏览: 4963 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

黑马程序员--JAVA的重载和重写

    博客分类:
  • JAVA
阅读更多

------- android培训java培训、期待与您交流! ----------

JAVA的重载和重写

重载跟重写overloadoverride,是java多态型的两种不同表现,重载是静态多态性,即同名不同参;重写就是覆盖,动态多态性,同名又同参。

 

一、重载(Overloading)

 

    1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。

 

    2Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

 

    3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

 

    下面是重载的例子:

class Test{
	public static void main(String[] args){
		int a = 1;
		char b = 'b';
		double c = 3.14;
		show(a,b,c);
	}

	private static void show(int a, char b, double c) {
		System.out.println(a+" "+b+" "+c);
	}
	/*private static void show(int x, char y, double z) {
		System.out.println(x+" "+y+" "+z);
	}*///错误的重载
	private static void show(int a, char b) {
		System.out.println(a+" "+b);
	}//不同的参数个数
	private static void show(int a, double b, char c) {
		System.out.println(a+" "+b+" "+c);
	}//不同的参数类型
	/*private static int show(int a, char b, double c) {
		System.out.println(a+" "+b+" "+c);
		return 1;
	}*///错误的重载
	private static boolean show(int a, double b) {
		System.out.println(a+" "+b);
		return true;
	}//不同的参数、不同的返回值类型
}

 

二、重写(Overriding

 

    1)父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

 

    2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

 

3)子类函数的访问修饰权限不能少于父类的;

 

    下面是重写的例子:

 

重写的主要优点是能够定义某个子类特有的特征:

 

 

public class Father{
   public void speak(){
       System.out.println(Father);
    }
}
public class Son extends Father{
    public void speak(){
        System.out.println("son");
   }
}

 

重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法。

 

public class Father{
   final public void speak(){
       System.out.println("Father");
    }
}
public class Son extends Father{
    public void speak(){
       System.out.println("son");
    }
}//编译器会报错

 

Fatherspeak()方法被默认修饰时,只能在同一包中,被其子类被重写,如果不在同一包则不能重写。

Fatherspeak()方法被protoeted时,不仅在同一包中,被其子类被重写,还可以不同包的子类重写。

 

 

三、重写与重载的总结:

 

重写方法的规则:

1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。

2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。

3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private

4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:

父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

 

 

而重载的规则:

1、必须具有不同的参数列表;

2、可以有不同的返回类型,只要参数列表不同就可以了;

3、可以有不同的访问修饰符;

4、可以抛出不同的异常;

分享到:
评论

相关推荐

    黑马程序员入学面试题

    Java中有许多内置的包、类和接口,如java.util、java.io、java.lang等。 #### 58. 常见异常 Java中定义了许多标准异常,如IOException、NullPointerException等。 以上是对给定文件中提及的知识点的详细解释,希望...

    黑马程序员笔记自己复习Java

    在Java中,多态可以使用方法重写或方法重载来实现。方法重写是指子类重写父类的方法,方法重载是指同一个方法可以具有不同的参数列表。 本文总结了Java基础知识点,涵盖了变量、数据输入、数组、方法、封装、API、...

    黑马程序员_Java基础辅导班教程课件[第01期]第8天

    6. **多态的实现**:通过方法重写(Override)和方法重载(Overload),可以实现多态。课程会介绍两者的概念和区别,以及如何在实际编程中应用。 7. **异常处理**:Java中的异常处理是程序健壮性的重要组成部分。...

    黑马程序员_Java基础辅导班教程课件[第01期]第11天

    "黑马程序员_Java基础辅导班教程课件[第01期]第11天"是一个专门为初学者设计的培训课程,旨在帮助学员深入理解和掌握Java的核心概念。这个课程可能是通过视频形式进行的,结合了理论讲解和实际操作,以便让学习者能...

    【黑马面试宝典】虐面试官神器之必备黑马程序员面试宝典V2.51

    "【黑马面试宝典】虐面试官神器之必备黑马程序员面试宝典V2.51"是为准备面试的程序员提供的一份宝贵的资源,它涵盖了JavaSE基础、面向对象、多态以及异常处理等多个核心知识点。本文将详细解析这些内容,帮助你更好...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机执行一系列任务的过程。 2. **Java语言概述,历史、特点** - **概述**:Java是一种...

    黑马程序员Java基础视频辅导班课堂笔记总结Day08

    面向对象编程是一种编程范式,它基于对象和类的概念,强调模块化、抽象、继承和多态等特点。今天,我们将学习Java基础视频辅导班课堂笔记总结Day08中的面向对象编程相关知识点。 继承是面向对象编程的重要概念,它...

    Java面试宝典Beta6.0.pdf

    构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。Constructor不能被继承,所以Constructor也就不能被Override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖...

    Java程序员面试宝典5.pdf

    在Java程序员面试宝典5.pdf中,包含了大量关于Java编程的知识点,涵盖了JavaSE基础、Java语法、多态、异常处理、常用API以及数据类型等多个方面,以下是对这些内容的详细知识点解读。 ### JavaSE基础知识点 1. **...

    java学科面试宝典v7.0.pdf

    1.1 重载(Overloading)和重写(Overriding)的区别: - 重载:这是一个编译时多态性的问题,指的是在同一个类中存在多个同名方法,但它们的参数类型、个数或顺序不同。重载方法的返回类型可以不同,访问修饰符也可以...

    java 继承与多态应用 输出员工信息 代码实例

    在Java中,多态有两种形式:编译时多态(方法重载)和运行时多态(方法重写)。这里主要讨论的是运行时多态,通过接口或继承实现。 假设`Employee`类有一个抽象方法`printInfo()`,`Manager`和`Worker`作为`...

    java面试宝典

    - `Override`是子类重写父类的方法,要求方法名、返回类型和参数列表完全一致,并且访问权限不能更低。 8. **构造器**: - 构造器不能被`override`,但子类可以定义与父类同名的构造器,这被称为构造器的重载。 ...

    最新版Java程序员面试宝典。

    - 多态是指允许不同类的对象对同一消息做出响应,主要通过方法重载(Overload)和重写(Override)来实现。 2. 访问权限修饰符: - public、private、protected和默认访问修饰符决定了类、方法和属性的访问范围。...

    毕向东java视频教程05章

    通过【黑马程序员_毕向东_Java基础视频教程第05天-10-面向对象(this关键字).avi】、【黑马程序员_毕向东_Java基础视频教程第05天-12-面向对象(this关键字在构造函数间调用).avi】和【黑马程序员_毕向东_Java基础视频...

    JAVA面试题.rar

    这份"JAVA面试题.rar"压缩包文件显然包含了2019年黑马程序员毕业班的Java开发面试相关资料,对于准备Java开发者面试的人来说是一份宝贵的学习资源。下面我们将详细探讨一些Java面试中常见的知识点。 1. **基础概念*...

    毕向东java07

    通过观看黑马程序员_毕向东_Java基础视频教程第07天的系列课程,学习者将能够系统地理解和运用Java中的继承与接口,进一步提升面向对象编程的能力。这个系列不仅适合初学者,对于有一定经验的开发者来说,也是一个...

    毕向东0801视频

    在Java中,多态主要体现在方法的重写(Override)和重载(Overload)。重写是指子类继承父类后,可以对父类的非final方法进行重新定义,使得子类对象在运行时调用自己特有的实现;重载则是指在同一个类中,允许存在...

    JAVA面试宝典

    《JAVA面试宝典》是程序员在应聘时的重要参考资料,它由黑马程序员精心制作,涵盖了面试中经常遇到的技术问题和知识点,为求职者提供了系统的复习指南。这份宝典不仅包括Java基础知识点,还涉及了面向对象、JavaSE...

Global site tag (gtag.js) - Google Analytics