重写:子类对父类方法的重新编写

  返回值不变,形参不变

  不能抛出新的或者范围更广的异常

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的多态性,

最新文章

  1. fragment嵌套问题
  2. svn提交时出现很多乱文件怎么解决
  3. Chrome书签被篡改之后的恢复
  4. 使用Form Builder创建Form具体步骤
  5. MongoDB学习笔记——文档操作之增删改
  6. 嵌入式 linux 查看内存
  7. zabbix server is not running: the information displayed may not be current
  8. ARM和x86的区别
  9. Taxonomy of class loader problems encountered when using Jakarta Commons Logging(转)
  10. JMeter-性能测试监控(解决.sh文件的启动)
  11. Python-类的封装
  12. MySQL Out-of-Band 攻击
  13. Linux基础第四课——文件操作
  14. 理解WebSocket心跳及重连机制(五)
  15. 【第一次玩Travis CI】终于弄好了我的马鸭
  16. P4175 [CTSC2008]网络管理
  17. 【加密算法】DES
  18. 通过session 怎么防止表单的重复提交!
  19. Drupal 通过API动态的加入样式文件
  20. .net安装部署“Error 1001 在初始化安装时发生异常” 的解决方法

热门文章

  1. centOS 及 ubuntu 下载地址记录
  2. git\CentOS6.5中gitlab安装教程
  3. tomcat中显示本地图片①(已解决)
  4. scrapy爬虫具体案例步骤详细分析
  5. CSS之不常用但重要的样式总结
  6. Mysql 索引之B+tree
  7. Hadoop分布式文件系统HDFS的工作原理
  8. warning C4828问题的处理
  9. React文档(十八)最佳性能
  10. switch与if语句的应用