鲁迅的一句话:总之岁月漫长,然而值得等待。

至于是不是他说的,就看大家的了。

/*
多态:事物存在的多种形态。
多态的前提:
1.要有继承关系。
2.要有方法的重写。
3.要有父类引用指向子类对象。

向上转型和向下转型:
1.父类引用指向子类对象    向上转型。由小变大
2.向下转型。由大变小,要用到强制类型转换。
3.一定要先有向上转型再有向下转型。

多态的好处和弊端:
好处:
1.提高了代码的可维护性(继承保证)和扩展性(多态保证)。
弊端:不能使用子类特有的属性和行为。

作为参数时,用到instanceof关键字来判断前边的引用是否是后面的数据类型。      

抽象类:abstract关键字
abstract class{}
public abstract void eat();
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类或接口。
抽象类是不能实例化的,要有具体的子类实例化按照多态的方式。

抽象类:
1.成员变量:既可以是变量,也可以是常量。abstract不能修饰成员变量。
2.成员方法:可以是抽象,也可以是非抽象。
3.构造方法:有。
成员方法的特点:
抽象方法是强制子类要做的方法。
非抽象方法是子类继承的,提高了代码的复用性。    

 */

abstract class Animal{
    public abstract void eat();
}
class Cat extends Animal{
    
    public void eat(){
        System.out.println("吃饭");
    }
}

class day5{
    public static void main(String[] args) {
        /*
        Father f=new Son();              //父类引用指向子类对象    向上转型。由小变大
        
        System.out.println(f.num);       //对于成员变量,编译看左边(父类),运行看左边(父类)。
        f.print();                         //对于成员方法,编译看左边(父类),运行看右边(子类)。   动态绑定。  
        f.aim();                         //对于静态方法,编译看左边(父类),运行看左边(父类)。        
        System.out.println(new Son().num);*/
        /*
        Son s=(Son)f;                      //向下转型。由大变小,要用到强制类型转换。
        s.print();                      
        Animal a=new Cat();
        a.eat();
       
        if(a instanceof Cat){
            Dog c=(Dog)a;                    //ClassCastException: Cat cannot be cast to Dog  
            c.eat();
        }           
        else a.eat();  */
        Cat c=new Cat();
        c.eat();
    }
}
/*
class Animal{
    public void eat(){
        System.out.println("动物吃饭");
    }
}
class Cat extends Animal{
    public void eat(){
        System.out.println("猫吃鱼");
    }
}
class Dog extends Animal{
    public void eat(){
        System.out.println("狗吃水");
    }
}
class Father{
    int num =10;
    public void print(){
        System.out.println("父类");
    }
        static void aim(){
        System.out.println("父类静态运行");
    }
}
class Son extends Father{
    int num=20;
    public void print(){
        System.out.println("子类");
    }
        static void aim(){
        System.out.println("子类静态运行");
    }
}*/

小白学JAVA,与你们感同身受,JAVA---day5:关于多态的理解和分析。鲁迅的一句话:总之岁月漫长,然而值得等待。相关推荐

  1. 小白学JAVA,与你们感同身受,JAVA---day6:抽象类接口的理解。鲁迅的一句话:总之岁月漫长,然而值得等待。

    抽象类接口的理解 鲁迅的一句话:总之岁月漫长,然而值得等待. /* 抽象类中的面试题: 1.一个抽象类中可不可以没有抽象方法:可以,这样做的目的只有一个,就是不让其他类创建本类对象交给子类完成. 2. ...

  2. 课程设计-毕业设计-JAVA画板课程设计---总之岁月漫长,然而值得等待。

    在校大学生的一份辛苦劳动成果写了一个小画板程序. 任务书... 1 1.1设计内容... 1 1.2设计任务及具体要求... 1 1.3软件开发运行环境.. 1 2  本组课题... 1 2.1课题. ...

  3. 【JVM从小白学成大佬】4.Java虚拟机何谓垃圾及垃圾回收算法

    在Java中内存是由虚拟机自动管理的,虚拟机在内存中划出一片区域,作为满足程序内存分配请求的空间.内存的创建仍然是由程序猿来显示指定的,但是对象的释放却对程序猿是透明的.就是解放了程序猿手动回收内存的 ...

  4. 小白学Django第九天| Cookie和session的那些骚操作

    点击上方"JAVAandPython君",选择"星标"公众号 重磅干货,第一时间送达 小白学Django系列: 小白学Django第一天| MVC.MVT以及D ...

  5. 小白学Django第十天| 模板的知识全部给你总结好了!

    点击上方"JAVAandPython君",选择"星标"公众号 重磅干货,第一时间送达 小白学Django系列: 小白学Django第一天| MVC.MVT以及D ...

  6. 零基础小白学Java难度大不大

    零基础小白学Java难度大不大?有很多人都是非常关心这个问题的,如今java在IT互联网行业的快速发展,引起了很多人的注意,那么,哪些人适合入行Java?零基础学习Java难度大吗?下面,小编就为大家 ...

  7. 零基础学Java需知:Java小白入门解疑大全

    Java行业在互联网发展迅速的今天是一日比一日发展的好,Java语言已经成为世界上应用较广泛的编程语言.学Java已经成为编程语言中的潮流,越来越多的人有意向到Java行业中发展. 其实,零基础学习J ...

  8. 小白学编程“Java小白”入门解疑大全

    成功的人分几种,有一种人叫做关系户,他们渠道多,广织关系网,有一种叫做平台户,他们平台有多硬,他们就有多硬,但无论是关系户还是平台户,依靠的总是别人的手.别人的嘴巴.别人辛苦创立下来的资源,归根到底, ...

  9. 小白学Java Web 3 Web前端之CSS基本知识2

    这一篇接着上一篇的内容来分享,上一篇还有大量的样式属性没有列出,不过在继续分享之前,我想先来分享一下关于网页的布局相关的一些东西,因为下一篇我打算分 享用仅仅前面三小篇的内容来制作一个简单的静态网页, ...

最新文章

  1. 分析方法升级三代测序辅助,优化无参转录组测序策略
  2. 听说你,对薪酬待遇不太满意。。。
  3. BZOJ1036 (其实这只是一份板子)
  4. python全栈开发_day52_html模板继承和静态配置
  5. centos linux 禁止ping
  6. I/O复用之 EPOLLONESHOT 事件
  7. html:(39):块级元素和内联块级元素
  8. CSS Scan扫描审核复制插件
  9. mt4双线macd_【名师讲堂第三季】第六期:基于MACD指标的买卖策略精讲
  10. linux nona怎么用_Linux nano编辑器命令常用方法
  11. java编程线板切割问题_坑爹的日志无法按天切割问题!
  12. mysql etc my.cnf_mysql配置文件/etc/my.cnf
  13. BackTrack 4 R2安装VMware tools
  14. 气象报告是什么计算机领域,计算机辅助翻译系统在亚运气象服务方面的应用报告...
  15. Mac 升级到protoc 指定版本
  16. mysql建考勤信息代码_C++嵌入式SQL写考勤/点名功能程序
  17. linux测试sata硬盘读写速度
  18. JAVA数组的遍历 获取最大值最小值 数组的反转 数组的查找 练习 定义方法创建指定大小的数组,并添加指定元素 拼接两个数组
  19. 表格排版及其表格嵌套
  20. 14、MyBatis-Plus入门到进阶

热门文章

  1. c语言 数组循环移动,如何将一个数组的元素循环左移?
  2. 建筑电气工程设计常用图形和文字符号_建筑水电图纸看不懂?10年老师傅教你看图技巧,分分钟安排...
  3. linux中的加法函数,上下文管理练习(为加法函数计时)
  4. Web框架——Flask系列之Flask简介(一)
  5. LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)
  6. LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复(vector + 哈希)
  7. LeetCode 1469. 寻找所有的独生节点
  8. LeetCode 837. 新21点(动态规划)
  9. 回溯算法(Backtracking Algorithm)之八皇后问题
  10. docker php nginx,使用docker快速搭建nginx+php环境