package QianFeng02;
//多态
public class Polymorphic {
public static void main(String[] args){
// HomeCh homeCh=new HomeCh("家鸡1");//一般实例化
Chickens homeCh=new HomeCh("家鸡1");//Chickens是父类 HomeCh是子类(多态)
homeCh.eat();
Chickens pheasant=new Pheasant("野鸡2");
pheasant.eat();
//用父类的引用指向子类的对象
// homeCh=pheasant;
// homeCh.eat();
System.out.println("------------------------");
eat(homeCh);
eat(pheasant);
Chickens jan=new Jan("尖叫鸡4");//Chickens也可以替换为Jan
eat(jan);
}
//抽象:::面向抽象编程
public static void eat(Chickens c){//Chickens是父类可以传不同类的对象(而不是只传jan对象或者homeChdu对象)
System.out.println("鸡翅3");
c.eat();
}
}
//鸡
// 不能被实例化
//抽象类的非抽象子类必须对父类抽象方法进行覆盖
abstract class Chickens{//父类一般定义为抽象类
private String name;
public Chickens(){}
public Chickens(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public abstract void eat();//抽象方法必须定义为public或者abstract
}
//家鸡
class HomeCh extends Chickens{
public HomeCh(String name){
super(name);//调用父类带参数构造方法(因为父类带参构造)
}
@Override
public void eat() {
System.out.println(getName()+"吃大米");
}
}
//野鸡
class Pheasant extends Chickens{
public Pheasant(String name){
super(name);
}
@Override//重写抽象类父类的方法
public void eat() {
System.out.println(getName()+"吃虫子");
}
}
//尖叫鸡
class Jan extends Chickens{
public Jan(String name){
super(name);
}
@Override//重写抽象类父类的方法
public void eat() {
System.out.println(getName()+"不吃");
}
}

  

Java多态详解的更多相关文章

  1. 【转】java多态详解

    1.        Java中除了static和final方法外,其他所有的方法都是运行时绑定的.private方法都被隐式指定为final的,因此final的方法不会在运行时绑定.当在派生类中重写基 ...

  2. “全栈2019”Java第五十四章:多态详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  4. Java面向对象详解

    Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...

  5. Java内部类详解(一)

    (转自:http://blog.csdn.net/wangpeng047/article/details/12344593) 很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听 ...

  6. Java多态性详解——父类引用子类对象

    来源:http://blog.csdn.net/hikvision_java_gyh/article/details/8957456 面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实 ...

  7. 「万字图文」史上最姨母级Java继承详解

    摘要:继承是面向对象软件技术中的一个概念.它使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用. 本文分享自华为云社区<「万字图文」史上最姨母级Java继承详解丨[奔跑吧!JAVA] ...

  8. Java内部类详解

    Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...

  9. 黑马----JAVA迭代器详解

    JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...

随机推荐

  1. 数据分析基础-jupyter notebook-Anaconda-Numpy

    数据分析介绍 1.数据分析是什么? 2.数据分析能干什么? 3.为什么利用Python进行数据分析? 4.数据分析过程概述 5.常用库简介 1.数据分析是什么? 数据分析是指用适当的统计分析方法对收集 ...

  2. Linux文件共享的实现方式

    前两天跟老师去北京开了一个会议,好久没学习了,今天才回学校,其中的辛酸就不说了.来正文: 1.什么是文件共享 (1).文件共享就是同一个文件(同一个文件指的是同一个inode,同一个pathname) ...

  3. opencv+tkinter制作HsvMaster(一)

    这两天看opencv-python的HSV色彩空间,在写程序时发现用HSV来提取图像区域是件令人恶心的麻烦事.拿阈值分割做个对比,阈值最多也就一两个参数需要调整:但是HSV需要对三个通道调整上下限,也 ...

  4. django的认证演变过程分析

    认证规则图: django不分离 drf分类 认证规则演变图 数据库session认证:低效 缓存认证:高效 jwt认证:高效 缓存认证:不易并发 jwt认证:易并发

  5. goweb- session和数据存储

    session和数据存储 Web开发中一个很重要的议题就是如何做好用户的整个浏览过程的控制,因为HTTP协议是无状态的,所以用户的每一次请求都是无状态的,我们不知道在整个Web操作过程中哪些连接与该用 ...

  6. [Algo] 253. Longest Substring Without Repeating Characters

    Given a string, find the longest substring without any repeating characters and return the length of ...

  7. android 获得存储设备状态

    1.获取存储器总大小,可用大小 File path= Environment.getExternalStorageDirectory();StatFs fs = new StatFs(path.get ...

  8. maven tomcat 自动部署配置

    1:Tomacat 配置 /tomcat-users.xml 添加如下: <role rolename="manager-gui"/> <role rolenam ...

  9. [数学][欧拉降幂定理]Exponial

    Exponial 题目 http://exam.upc.edu.cn/problem.php?cid=1512&pid=4 欧拉降幂定理:当b>phi(p)时,有a^b%p = a^(b ...

  10. RedBlack-Tree(红黑树)原理及C++代码实现

    众所周知,红黑树是用途很广的平衡二叉搜索树,用过的都说好.所以我们来看看红黑树的是怎么实现的吧. 红黑树顾名思义,通过红与黑两种颜色来给每个节点上色.其中根结点和叶子结点一定是黑色的,并且红色结点的两 ...