Java基础学习篇---------多态
一、多态性的理解
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基础学习篇---------多态的更多相关文章
- [转帖]java基础学习总结——多态(动态绑定)
https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态
- Java基础学习小记--多态
题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...
- Java基础学习篇---------继承
一.覆写(重写) 1.含义:子类的定义方法.属性和父类的定义方法.属性相同时候 方法名称相同,参数相同以及参数的个数也相同,此时为覆写(重写) 扩充知识点: 覆盖:只有属性名字和方法名字相同,类型.个 ...
- java基础学习总结——多态(动态绑定)
一.面向对象最核心的机制——动态绑定,也叫多态
- Java基础学习篇---------this、object的学习
一.this的学习方法 1.使用this调用构造方法市一定放在构造方法的首行 2.使用this调用构造方法时一定流出调用的出口 public class MyClass { public MyClas ...
- Java基础学习篇---------String、集合的学习
一.String常用的方法: 1. == 实质比较两个对象的地址数值 String a = "hello" (hello为匿名对象) String a1 = "hell ...
- Java基础学习篇---------封装
一.类和对象分配内存 二.Java中的内部类 : 可以直接去访问外部类的所有属性(包括私有成员) 1.Java中成员内部类 (1).内部类的方法可以直接访问外部类的类中的所有成员变量 (2).外部类 ...
- Java基础学习篇---------static
一.static的使用 1.使用static定义的属性往往通过类名直接调用,它的属性(方法)不属于某一个的对象的.所以对象没有创建之前就可以对static的属性的调用,方法亦如此. 2.static ...
- Java基础学习篇---------多线程
一.编写两种多线程的方法 (1).Thread(它是继承Runnable的子类) class MyThread extends Thread{ private int ticket = 5; @Ove ...
随机推荐
- Spring框架的属性注入
1. 对于类成员变量,常用的注入方式有两种 * 构造函数注入(没有空的构造方法注入) * 属性setter方法注入(有空的构造方法注入) 2. 在Spring框架中提供了前两种的属性注入的方式 1. ...
- binlog怎样参与mysql recover的
转自 Louis Hust's Blog MySQL两阶段提交 29 July 2015 参数介绍 两阶段提交 什么情况下会出现binlog写入了,但是实际这条数据不存在库中? 参数介绍 innod ...
- Debian use sudo
刚安装好的Debian默认还没有sudo功能.1.安装sudo# apt-get install sudo2.编辑 /etc/sudoers ,添加如下行# visudoroot ALL=(ALL:A ...
- JVM知识
堆(Heap)和非堆(Non-heap)内存 简单来说堆就是Java代码可及的内存,是留给开发人员使用的:非堆就是JVM留给 自己用的. 堆内存分配 JVM初始分配的内存由-Xms指定,默认是 ...
- 如果程序集是从 Web 上下载的,即使它存储于本地计算机,Windows 也会将其标记为 Web 文件,http://go.microsoft.com/fwlink/?LinkId=179545
使用Silverlight,经常弄出很多莫名的XXX文件来于Web,神马信任程序集,就Build个程序都那么麻烦,应该在所有发布时注明一些最基本的配置说明,最BT莫过于连下载程序集的地方都找不到. 若 ...
- 【Maven】安装及配置(Linux)
本文介绍Linux环境下安装Maven 安装环境和软件 系统:Linux(CentOS) 软件:apache-maven-3.3.9-bin.tar.gz(解压版). 安装步骤 maven是基于Jav ...
- python之零碎知识
一 join方法 主要是做字符串的拼接:join后面跟的类型必须是要可迭代得到对象 for循环的对象是可迭代对象 # result = "".join(li) # print(re ...
- 带你快速进入.net core的世界(转)
出处:http://www.cnblogs.com/zhaopei/p/netcore.html 阅读目录 vmware虚拟机安装 CentOS7.3安装 Windows的客户端软件 .NET Cor ...
- flask_模板
由于python中生成html比较繁琐,所以flask自动为你配置好jinjia2模板.下面我们开始学习模板应用吧~ 1.编写microblog模块 注:(1)这里为了渲染模板,我们从Flask导入了 ...
- 编译hbase-1.2.3源代码
目录 目录 1 1. 约定 1 2. 安装jdk 1 3. 安装maven 1 4. 网络配置 2 4.1. eclipse 3 4.2. maven 3 5. 从hbase官网下载源代码包: 4 6 ...