java面向对象之多态
多态:指同一个实体同时具有多种形式
好比,你去面馆吃面,说我要吃面,那么;老板给我牛肉面,鸡蛋面等都可以,
这就是说"面"有多种形态,也就是说实体有多种形态;
编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定。
如果编译时类型和运行时类型不同,就出现多态。
Eg:
前提:Student extends Person:
Person p = new Person();
Student s = new Student();
Person p = new Student();//多态
引用关系:父类变量指向子类实例对象
实现多态的机制:
父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
多态的作用:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
只修改方法的实现,不必修改方法的声明
继承是多态产生的前提条件;
分类:
编译时多态:方法重载
运行时多态:方法覆写
Eg:
package test;
class Dog{
void eat(){
System.out.println("一般的狗吃一般的狗粮!");
}
}
class HashDog extends Dog{
void eat(){
System.out.println("哈士奇吃哈士奇的狗粮!");
}
}
class ZangAoDog extends Dog{
void eat(){
System.out.println("藏獒吃藏獒的狗粮!");
}
}
//定义一个动物园喂的方法
class Zoo{
void feed(Dog d){
d.eat();
}
}
public class Demo11 {
public static void main(String[] args) {
Dog hd = new HashDog();
Dog zd = new ZangAoDog();
Zoo z = new Zoo();
z.feed(hd);
z.feed(zd);
}
}
输出:
哈士奇吃哈士奇的狗粮!
藏獒吃藏獒的狗粮!
相关文章
- 解决IDEA导入Eclipse项目时,编译报错“ Error:(1, 1) java: 非法字符: ‘ufeff’”
- java验证码
- [转]java利用AES实现URL的参数加密
- [转]Java日期时间使用总结
- Java Invoked OOM-Killer - OOM不一定是来自于java heap
- 2022 大厂面试秘籍 Java 岗:中间件 + 算法 +HTTP+ 线程 + 虚拟机 + 分布式
- Java学习笔记:03面向对象-接口_多态
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
- 第四节:详细讲解Java中的类和面向对象思想
- Java中toArray的用法探究(java数组与list转换)
- C++ 和 java 使用 AES CBC 128 加解密
- Java程序员应该知道的10个面向对象理论
- 栈Stack的相关操作(java)
- java.lang.OutOfMemoryError: Java heap space解决方法
- Java打印输出:java天龙八部私服
- (JAVA):学习面向对象时,需要注意的细节-----重点第一部分。
- Java设计模式之行为型:访问者模式
- Java学习---面向对象的远程方法调用[RMI]
- Java面向对象基础(二)——详解
- JMeter入门(4):Java Request实例
- Java基础 | 第七弹—String(积少成多)
- 【JAVA】浅谈java枚举类
- Java学习笔记,适用于零基础的小伙伴