java 多态
2015-09-07 00:08
316 查看
java的特点就是封装,继承,多态。
多态实现必要条件:
1,继承
2,重写
3,父类对象指向子类应用。
继承和重写就很简单了,父类对象指向子类应用是什么一直不是很理解,就像是 : 父类() a = new 子类();这种形式。
看一个简单的例子
当a调用call这个方法的时候同时实现了eat这个方法,但是子类已经重写了这个方法所以就备覆盖了,这里实现多态是因为子类比父类有更多的实现,范围更大,更可以实现多样化。
多态还有一个是动态绑定:
绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。动态绑定顾名思义就是运行的时候绑定。
看一个例子
打印结果:白种人
将jeck这个类和Person这个类关联起来,当调用 jeck_Col()的时候就动态的把color加载进来了。
多态实现必要条件:
1,继承
2,重写
3,父类对象指向子类应用。
继承和重写就很简单了,父类对象指向子类应用是什么一直不是很理解,就像是 : 父类() a = new 子类();这种形式。
看一个简单的例子
public class fuleizhixiangzile { public static void main(String[] args) { Animal a = new dog(); a.call(); } } class Animal { void call() { eat(); } void eat() { System.out.println("a"); } } class dog extends Animal { @Override void call() { // TODO Auto-generated method stub super.call(); } @Override void eat() { // TODO Auto-generated method stub System.out.println("d"); sleep(); } void sleep() { System.out.println("sleep"); } }
当a调用call这个方法的时候同时实现了eat这个方法,但是子类已经重写了这个方法所以就备覆盖了,这里实现多态是因为子类比父类有更多的实现,范围更大,更可以实现多样化。
多态还有一个是动态绑定:
绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。动态绑定顾名思义就是运行的时候绑定。
看一个例子
public class Text { public static void main(String[] args) { American a = new American(); Chinese c = new Chinese(); jeck j = new jeck(a); j.jeck_Col(); } } abstract class Person{ abstract void colors(); } class American extends Person{ @Override void colors() { System.out.println("白种人"); } } class Chinese extends Person{ @Override void colors() { // TODO Auto-generated method stub System.out.println("黄种人"); } } class jeck{ Person p; public jeck(Person p) { // TODO Auto-generated constructor stub this.p = p; } void jeck_Col(){ p.colors(); } }
打印结果:白种人
将jeck这个类和Person这个类关联起来,当调用 jeck_Col()的时候就动态的把color加载进来了。
相关文章推荐
- java字节码生成与动态代理的实现
- JAVA NIO
- 从0开始 1. Java简介 Java运行环境搭建 HelloWorld实现及Java运行原理介绍
- 从0开始 2. JAVA基础语法(MyEclipse引入,注释,标识符命名规则及Java中的关键字)
- Java获取泛型参数
- Java中常量和静态变量区别
- MyEclipse中SVN插件的安装与配置
- 基于jdk1.8的HashMap源码学习笔记
- java script 2
- 关于Spring依赖注入的几种方式
- 【Android Studio】没有先安装JDK
- 2015第37周一struts2 jstl 标签
- 【转载】java枚举使用详解
- struts2 入门2:struts配置相关与拦截器
- 数组在java中的声明和应用
- java AES加密算法
- Java中的HashCode
- eclipse发布项目时,会自动还原server.xml和content.xml文件
- springmvc中格林威治时间插入数据库失败
- java.lang.UnsatisfiedLinkError: Couldn't load entryex from loader dalvik.system.