一、多态性的理解

  1.向上转型:子类为父类对象实例化,调用的一定是子类覆写的方法,他们之间找的是共性

  2.向下转型:子类扩充了父类的某些功能,而父类中没有该功能,他们之间找的是特性

  案例: Number(父类)    Number1(子类)

  Number number = (Number1)new Number(); //ClassCastException: com.example.lib4.Number cannot be cast(强制转换的异常)
  number.printf();

  在向下转换之前一定进行向上转换,让父类知道哪个是它的子类,才可以进行强制类型的转换

  3. instaceof 关键字 :  返回boolean数据

   作用 : 判断某一个对象是否是某一个类的实例

      if(number instanceof Number1){}

二、abstract关键字的使用
  1.使用规则:
   (1).抽象类不能实例化
   (2).抽象类一定被子类来继承
   (3).抽象类中可以没有抽象方法,一旦有抽象方法,子类必须覆写抽象类的抽象方法

类似于C++的Virtual的关键字使用,父类不用去实现,子类必须取实现的方法

三、接口的使用interface以及implents

  1.简单的接口定义:   

  interface A{
   public static final String MSG = "hello world";
   public abstract void be();
  }
  
  2.使用规则
   (1). 接口必须有子类,子类使用implents进行接口实现,一个子类可以同时实现多个接口
   (2). 接口的子类(如果不是抽象类),一定要覆写接口中全部的方法
   (3). 接口可以实现子类向上转型,进行实例化操作
  
  3.接口的一些概念
   (1).一个类既要继承父类又要实现接口的顺序 : 先继承后实现接口
   (2).接口中的访问权限都是public
   (3).一个类可以实现多个implents的接口,但是接口不能继承类(反之则不成立)
   (4).一个接口可以使用extends来继承多个implents的接口 (接口实现接口的多继承,但接口不能继承类)
   (5).static定义的内部接口就是外部接口,static定义的内部类就是外部类
  
  4.接口的简单的程序
  
  调用方法的实现:
  Compter compter = new Compter();
  compter.plugin(new Flash());
  compter.plugin(new Print());

  

public interface IPlayerGame {
public void playGame();
}
public class Circle extends Shape implements IPlayerGame {
private double r = 1.0;
private double z = 0;
@Override
public int sum() {
return (int)(z = 3.14 * r * r);
} @Override
public void playGame() { }
}
四、抽象类和接口的区别

五、项目中总结性概念

  

  

  

   

Java基础学习篇---------多态的更多相关文章

  1. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  2. Java基础学习小记--多态

    题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...

  3. Java基础学习篇---------继承

    一.覆写(重写) 1.含义:子类的定义方法.属性和父类的定义方法.属性相同时候 方法名称相同,参数相同以及参数的个数也相同,此时为覆写(重写) 扩充知识点: 覆盖:只有属性名字和方法名字相同,类型.个 ...

  4. java基础学习总结——多态(动态绑定)

    一.面向对象最核心的机制——动态绑定,也叫多态

  5. Java基础学习篇---------this、object的学习

    一.this的学习方法 1.使用this调用构造方法市一定放在构造方法的首行 2.使用this调用构造方法时一定流出调用的出口 public class MyClass { public MyClas ...

  6. Java基础学习篇---------String、集合的学习

    一.String常用的方法: 1. == 实质比较两个对象的地址数值 String a = "hello"  (hello为匿名对象) String a1 = "hell ...

  7. Java基础学习篇---------封装

    一.类和对象分配内存 二.Java中的内部类  : 可以直接去访问外部类的所有属性(包括私有成员) 1.Java中成员内部类 (1).内部类的方法可以直接访问外部类的类中的所有成员变量 (2).外部类 ...

  8. Java基础学习篇---------static

    一.static的使用 1.使用static定义的属性往往通过类名直接调用,它的属性(方法)不属于某一个的对象的.所以对象没有创建之前就可以对static的属性的调用,方法亦如此. 2.static ...

  9. Java基础学习篇---------多线程

    一.编写两种多线程的方法 (1).Thread(它是继承Runnable的子类) class MyThread extends Thread{ private int ticket = 5; @Ove ...

随机推荐

  1. Apache模块开发

    一.简介 Apache HTTP服务器是一个模块化的软件,使管理者可以选择核心中包含的模块以裁剪功能.可以在编译时选择被静态包含进httpd二进制映象的模块,也可以编译成独立于主httpd二进制映象的 ...

  2. DNA甲基化检测服务

    DNA甲基化检测服务 DNA甲基化是最早发现的基因表观修饰方式之一,真核生物中的甲基化仅发生于胞嘧啶,即在DNA甲基化转移酶(DNMTs)的作用下使CpG二核苷酸5'-端的胞嘧啶转变为5'-甲基胞嘧啶 ...

  3. UI设计行业中的“延禧攻略”,教你从青铜变王者

    最近一直在追<延禧攻略>,女主魏璎珞敢爱敢恨,有仇必报的性格吸引不少人,她从低贱的秀坊小宫女步步为营,最终成为皇帝最宠爱的令妃呼风唤雨.尔虞我诈的后宫,想要打怪升级光有颜值是万万不够的,更 ...

  4. eclipse安装automake

    help->Install new software

  5. c++11 stl 学习之 pair

    pair以模板的方式存储两个数据 namespace std {template <typename T1, typename T2>struct pair {// memberT1 fi ...

  6. spring 3 mvc 的 @ResponseBody返回数据中文乱码

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter&q ...

  7. android 混淆文件proguard.cfg详解 (转载)

    -injars  androidtest.jar[jar包所在地址] -outjars  out[输出地址] -libraryjars    'D:\android-sdk-windows\platf ...

  8. Winpython环境下mayavi配置

    Winpython环境下mayavi配置 在pythonxy中会直接有mayavi软件包,但是所附带的杂包实在太多.本人一直用的是window下的winpython或者linux下的anaconda来 ...

  9. 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)

    传送门 一道神奇的期望状压dp. 用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献. 如果我们从前向后推有可能会遇到不合法的情况. 所以我 ...

  10. android 蓝牙通讯编程 备忘

    1.启动App后: 判断->蓝牙是否打开(所有功能必须在打牙打开的情况下才能用) 已打开: 启动代码中的蓝牙通讯Service 未打开: 发布 打开蓝牙意图(系统),根据Activity返回进场 ...