10.1 继承-四大特征之三

10.1.1 概念

继承可以解决代码复用,让编程更加接近人类思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类(比如刚才的Student),在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类:

class 子类 extends 父类

这样,子类就会自动拥有父类的定义的属性和方法。

10.1.2 注意

注意:父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符的属性和方法被子类继承了,但是父类的private修饰符的属性和方法不能被子类继承。

10.1.3 说明

1、子类最多只能继承一个父类(指直接继承);

2、Java中所有类都是Object类的子类;

3、JDK6中有202个包,3777个类、接口、异常、枚举、注释和错误;

4、在做开发时,强烈建议多查看jdk帮助文档;

5、在使用类时,实在不知道怎么办,google之。

10.2 方法重载(overload)

10.2.1 引出问题

编写一个类,编写方法可以接收两个整数,返回两个数中较大的数。

问题1:如果要求可以接收两个float型的数,返回较大数?

问题2:如果要求可以接收三个int型的数,返回较大数?

10.2.2 概念

方法重载就是类的一种功能的多种实现方式,到底采用哪种方式,取决于调用者给出的参数。

10.2.3 注意事项

1、方法名相同;

2、方法的参数类型、个数、顺序至少有一项不同;

3、只是方法返回类型不一样,不能构成重载;

4、只是方法修饰符不一样,也不能构成重载。

10.3 方法覆盖(override)

10.3.1 引出问题

子类可以继承父类的属性和方法,这样可以提高代码的复用性。假设要求大家些三个类猫、狗、猪,这三个都是动物,动物必然存在相同的特点。首先我们根据类的抽象特征,将它们的相同点提取出来,形成一个父类Animal,然后继承。

问题来了,怎么解决父类和子类方法的异同!

10.3.2 概念

方法覆盖就是子类有一个方法,和父类的某个方法的返回类型、名称、参数一样,那么就说子类的方法覆盖了父类的那个方法。

10.3.3 注意事项

1、子类的方法的返回类型、方法名称、参数要和父类方法的完全一样。

2、子类方法不能缩小父类方法的访问权限。

方法重载代码演示:

 1 /**日期:2016-03-04
 2  * 功能:方法重载的演示
 3  */
 4 public class Practice1
 5 {
 6     public static void main(String []args)
 7     {
 8         Abc abc1=new Abc();
 9         System.out.println(abc1.getMax(5,4));
10     }
11 }
12
13 class Abc
14 {
15     public int getMax(int a,int b)
16     {
17         if(a>b)
18         {
19             return a;
20         }else
21         {
22             return b;
23         }
24     }
25     public float getMax(float a,int b) //参数的类型不同
26     {
27         if(a>b)
28         {
29             return a;
30         }else
31         {
32             return b;
33         }
34     }
35 }

 方法覆盖代码演示:

 1 /**日期:2016-03-04
 2  * 功能:方法覆盖的演示
 3  */
 4 public class Practice2
 5 {
 6     public static void main(String []args)
 7     {
 8         //普通方法如下:
 9         Cats cat=new Cats();
10         cat.cry();
11         Dogs dog=new Dogs();
12         dog.cry();
13         //多态方法如下:
14         Animals an=new Cats(); //这里也体现了多态
15         an.cry(); //这里也体现了多态
16         an=new Dogs();
17         an.cry(); //这里体现出多态的优势,就是可以用Animals实例化一次,
18         //多次调用Animals的子类;如果不用多态,用到狗时要实例化个狗,
19         //用到猫时要实例化个猫,如果子类非常多的时候会非常麻烦。
20     }
21 }
22
23 class Animals
24 {
25     public void cry()
26     {
27         System.out.println("不知道什么动物叫!");
28     }
29 }
30
31 class Cats extends Animals
32 {
33     public void cry()
34     {
35         System.out.println("喵喵叫!");
36     }
37 }
38
39 class Dogs extends Animals
40 {
41     public void cry()
42     {
43         System.out.println("汪汪叫!");
44     }
45 }

运行结果:

1 喵喵叫!
2 汪汪叫!
3 喵喵叫!
4 汪汪叫!

转载于:https://www.cnblogs.com/PistonType/p/5243873.html

韩顺平循序渐进学java 第10.11讲 继承.重载.覆盖相关推荐

  1. 网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享

     网沙(爱玩啥)韩顺平.循序渐进学.java.从入门到精通系列视频分享 韩顺平.循序渐进学.java.从入门到精通.第0讲-开山篇 韩顺平.循序渐进学.java.从入门到精通.第1讲-内容介绍.项 ...

  2. 韩顺平循序渐进学java 第21.22.23.24讲 集合

    21.1 引出问题 一个问题? 前面我们学习了数组,充分体会到数组的优越性,就是可以存储同一类型的数据,但是我们假设有这样的需求,大家看看如何解决? 请做一个公司职员薪水管理系统,要求完成如下功能: ...

  3. 韩顺平循序渐进学java 第19讲 多维数组

    19.1 二维数组 高维数组在工作中用到的不多,所以只介绍二维数组. 1.定义 语法:类型 数组名[][]=new 类型[大小][大小] 比如:int a[][]=new int[2][3] 2.分析 ...

  4. 韩顺平循序渐进学java 第12讲 多态

    12.1 多态-四大特征之四 12.1.1 概念 所谓多态,就是指一个引用(类型)在不同情况下的多种状态. 可以这样理解:多态是指通过指向父类的指针,来调用在不同子类中实现的方法. 12.1.2 注意 ...

  5. 韩顺平循序渐进学java 第13讲 抽象类.接口

    13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,称为抽象方法,用abstract来修饰该类,称为抽象类. 13.1.2 抽象类-深入讨论 抽象 ...

  6. 【循序渐进学Python】面向对象知多少——继承

    [循序渐进学Python]面向对象知多少--继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制,那么今天我们来学习面向对象的第二大特征--继承. 继承 什么是继承 ...

  7. osx java 6_OSX 10.11 java 6不兼容怎么办?OSX 10.11 java 6不兼容解决办法

    OSX 10.11 java 6不兼容怎么办?有很多用户在使用最新的OSX 10.11系统时会发现java SE 6不兼容的问题,其实要解决 这个问题比较简单,用户需要下载安装最新的Java SE 8 ...

  8. 零基础学Java的10个方法

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载.​ 零基础学Java只要方法得当,依然有机会学习好Java编程. 但作为 ...

  9. 从零学Java(29)之方法重载

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

最新文章

  1. 再见Python!Yann LeCun警告:深度学习需要新编程语言
  2. 空洞卷积(Dilated Convolution):有之以为利,无之以为用
  3. Centos 7 下 Corosync + Pacemaker + DRBD + psc + crmsh 实现 mysql 服务高可用
  4. 浅谈linux字符设备注册
  5. 检查 Linux 服务器性能
  6. 移动发布手机病毒警示信息 发现六种新型病毒
  7. 明显调用的表达式前的括号必须具有函数类型_Chisel(二) Scala语法 变量与函数...
  8. window系统服务器,远程连接mysql数据库。
  9. c++11 实现半同步半异步线程池
  10. jQuery 2.0.3 源码分析Sizzle引擎 - 编译函数(大篇幅)
  11. 机器学习——下采样(under-sampling)
  12. intouch负值显示0_InTouch常见问题
  13. html5毕业设计程序,网页毕业设计制作流程
  14. 分享一个xshell7的绿色版
  15. h2ouve下载 insyde_一种基于InsydeBIOS的BIOS更改方法及系统与流程
  16. A类业余电台操作证书考试内容提要
  17. 五个海盗如何分100个金币呢?
  18. uiautomatorviewer 双击闪退问题
  19. 51单片机学习笔记(清翔版)(19)——串口通信
  20. kd树搜索(k邻近法)

热门文章

  1. linux下的last以及lastb命令
  2. java开发和测试开发,附小技巧
  3. python【Matlibplot绘图库】基本使用(真の能看懂~!)
  4. Imagenet VGG-19网络加载和特征可视化
  5. 在sublime中让html和css链接
  6. group by是否会用到索引_平时工作中经常用到的SQL,这些你都知道吗?
  7. python和软件自动化_软件测试和自动化测试
  8. PHP从入门到跑路(一), 安装PHP环境
  9. 网络推广公司介绍几个能提升网站收录的“隐藏版”小技巧!
  10. 移动端网站优化该注意哪些重点?