JAVA面向对象之重载与重写
重写:子类对父类方法的重新编写
返回值不变,形参不变
不能抛出新的或者范围更广的异常
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
}
}
尽管b属于Animal类型,但是它运行的是Dog类的move方法。这是由于在编译阶段,只是检查参数的引用类型;在运行时,Java虚拟机(JVM)指定对象的类型并且运行该对象的方法。
如果此时用b调用Animal没有,但是Dog有的方法,则会报错,因为编译时Animal没有该方法。
父类变量指向子类实例时可以使用强制类型转换访问父类没有的子类成员。
People a=new People();
People b=new Up(6);
a.bark();
b.bark();
System.out.println(((Up)b).level); // 强制类型转换
重写规则:
参数列表必须与被重写方法相同
返回值必须与被重写方法类型相同
访问权限必须大于等于被重写方法
父类的成员方法只能被子类重写
final不能被重写
static不能被重写但可以被再次声明
字类与父类同包,可以重写所有非final和rprivate的方法
子类和父类不同包,子类只能够重写父类的声明为public和protected的非final方法
重写不能抛出更广或者新的异常
构造方法不能被重写
不被继承的方法不能被重写
Super关键字:调用父类的方法 super.xxx(xxx)
重载:在同一个类中,方法名相同,返回值类型可以不同,参数列表必须不同
重载和重写都体现了Java的多态性,
JAVA面向对象之重载与重写的更多相关文章
- java 继承、重载、重写与多态
首先是java 继承.重载和重写的概念 继承: 继承的作用在于代码的复用.由于继承意味着父类的所有方法亦可在子类中使用,所以发给父类的消息亦可发给衍生类.如果Person类中有一个eat方法,那么St ...
- Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类
01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...
- JAVA中的重载和重写
重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载(Overloading)是一个类中多态性的一种表现 ...
- Java——继承,重载,重写三剑客
About-继承 所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类. 继承可以理解为一个对象从另一个对象 ...
- java 中的重载与重写 抽象类与接口的区别
. 重载与重写的区别: 重载(overload) | 重写(override) 1 方法的名称相同,参数个数.类型不同 | 方法名称.参数列表.返回值类型与父类完全相同 2 ...
- Java方法的重载和重写
重载与重写对比: 重载: 权限修饰符(public private 默认):无关 方法名:重载的两个方法的方法名必须相同 形参的个数不同 形参的类型不同 三者至少满足一个 返回值类型: 重载与返回值 ...
- java 方法的重载、重写与重构
首先我们要知道重载.重写.重构的区别 重载:指的是在同一个类中,方法名相同,但是参数数量.参数类型或者返回类型不同的方法就叫做重载. 重写: 重写分两种.第一种的是在子类继承父类的情况下,通过@Ove ...
- 描述 Java 中的重载和重写?
重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动, 而重写是运行时活动.你可以在同一个类中重载方法,但是只能在子类中重写方 法.重写必须要有继承.
- 【java基础】重载与重写
前言 : 很早的时候,我就知道这两个东西,但是,也仅仅是停留在知道的程度而已,对于什么是重写,什么事重载,还是感到十分的迷惑,迷茫.正好,在软考复习时又经历这两个东西,细心一点,探究了一下,有点收获, ...
随机推荐
- 【我的前端自学之路】【HTML5】Web Socket
以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508118.html 什么是Web Socket WebSocket ...
- python程序—士兵出击
class Gun: def __init__(self,gun_type): self.gun_type=gun_type self.bullet_count= def add_bullet(sel ...
- 原生JS实现轮播效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- PHP工程师必备知识整理
一.http/https协议,tcp/ip协议,websocket,session,cookie 二.php:oop,thinkphp5,laravel 三.mysql.memcache.redis ...
- strcmp()字符串比较函数用法
函数原型: int strcmp(const char *s1, const char *s2); 头文件: #include <string.h> 功能: 用来比较两个字符串 参数: s ...
- 肿瘤数据库除了TCGA,还有TCIA--转载
TCIA就是基于TCGA数据开发的,不同的是TCIA只提供了20个癌种的免疫数据分析. 看网站首页的介绍就知道,这个数据库主要是根据TCGA的二代测序数据开发出来的.这里的20个癌种,点击每个柱子进去 ...
- c#数据库事务锁类型
一.脏读.不可重复读.幻象读的区别 1.脏读:包含未提交数据的读取.例如,事务 a 更改了某行(数据库已发生更改,但尚未提交,有可能发生回滚),事务 b 在事务 a 提交更改之前读取已更改的行.如 ...
- Java 占位符
Java的占位符有两种:% 和 {} String 类对象 只能使用 % 有效. MessageFormat 类对象 只能使用 {} 有效. package demo; import java.tex ...
- HttpClient MultipartEntityBuilder 上传文件
文章转载自: http://blog.csdn.net/yan8024/article/details/46531901 http://www.51testing.com/html/56/n-3707 ...
- C++学习建议
C++学习建议 C++缺点之一,是相对许多语言复杂,而且难学难精.许多人说学习C语言只需一本K&R<C程序设计语言>即可,但C++书籍却是多不胜数.我是从C进入C++,皆是靠阅读自 ...