1、instanceof关键词
   A instanceof B是用来判断内存中的实际对象A是不是B类型(具体事例看3小节代码)

2、重写条件:
   1、继承关系
   2、子类重写父类方法
   3、方法名一样,参数个数和类型一样
   
3、继承
   子类Student继承父类Person,实例化子类对象student的时候,在堆中会为其分配内存空间,在其内存空间中再划分一部分空间作为实例化一个父类new Person()的内存空间,这个父类对象的属性方法只为子类对象student服务
   
   装箱和拆箱
   public class Person {

String name;
   }

public class Student extends Person{

int height;

public void study() {
        System.out.println("学习");
    }
   }
   
   public class Test05 {

public static void main(String[] args) {

Person p = new Person();
        Student s = new Student();

//instanceof可用于if判断中
        System.out.println(p instanceof Person);    //true
        System.out.println(s instanceof Student);    //true
        System.out.println(s instanceof Person);    //true
        System.out.println(p instanceof Student);    //false
        
        //装箱

//当把Student对象赋值给Person类型引p1时,p1指向Student对象地址,但引用p1只能找到(识别)Person中自带的属性和方法
        Person p1 = s;
        //下面这个写法其实和上面的Person p1 = s;是一个意思
        Person p2 = new Student();

//拆箱
        //再把父类强制转换为子类(前提是:首先要有一个子类对象赋值给父类的引用)
        //s2指向对象p1地址,但是由于p1指向的是Student对象地址,所以s2指向的是Student对象地址,引用s2是Student类型可以找到Person和Student中自带的属性和方法
        Student s2 = (Student)p1;

//注意:并不能直接把父类强制转换为子类
        //Student s3 = (Student)p;

System.out.println(p1 instanceof Person);    //true
        System.out.println(p1 instanceof Student);    //true
        
        System.out.println(p2 instanceof Person);    //true
        System.out.println(p2 instanceof Student);    //true

}

}
4、多态
   面向对象三大特性:封装、继承、多态
   多态存在的三个条件:
   1、子类继承父类
   2、子类重写父类方法
   3、父类的引用指向子类的对象

小男孩玩宠物

拆箱装箱简单实例:

public class Boy {

/**
     * Pet类、Bird类、Pig类 装箱拆箱
     * @param p
     */
    public void play(Pet p) {
        if(p instanceof Bird) {
            Bird d  = (Bird) p;
            d.birdEnjoy();
        }else if(p instanceof Pig) {
            Pig pig = (Pig) p;
            pig.pigEnjoy();
        }
    }
   }
   //宠物类
   public class Pet {
    public void enjoy() {
        System.out.println("叽叽叽叽~~~宠物很高兴");
    }
   }
   //小猪类
   public class Pig extends Pet{
    public void pigEnjoy() {
        System.out.println("哼哼哼哼~~~~小猪很高兴!");
    }
   }
   //小鸟类
   public class Bird extends Pet{
    public void birdEnjoy() {
        System.out.println("叽叽叽叽~~~鸟儿很高兴");
    }

}

public class BoyFun {
    public static void main(String[] args) {
        Boy boy = new Boy();
        Bird b = new Bird();
        Pig p = new Pig();
        boy.play(b);
        boy.play(p);
    }
   }

运行:
   叽叽叽叽~~~鸟儿很高兴
   哼哼哼哼~~~~小猪很高兴!

多态简单实例:
   public class Boy {

public void play(Pet p) {
        p.enjoy();
    }
   }
   //宠物类
   public class Pet {
    public void enjoy() {
        System.out.println("叽叽叽叽~~~宠物很高兴");
    }
   }
   //小猪类
   public class Pig extends Pet{
    public void enjoy() {
        System.out.println("哼哼哼哼~~~~小猪很高兴!");
    }
   }
   //小鸟类
   public class Bird extends Pet{
    public void enjoy() {
        System.out.println("叽叽叽叽~~~鸟儿很高兴");
    }

}

public class BoyFun {
    public static void main(String[] args) {
        Boy boy = new Boy();
        Bird b = new Bird();
        Pig p = new Pig();
        boy.play(b);
        boy.play(p);
    }
   }

运行:
   叽叽叽叽~~~鸟儿很高兴
   哼哼哼哼~~~~小猪很高兴!

转载于:https://www.cnblogs.com/snzd9958/p/9452331.html

关键词instanceof、重写、继承、多态相关推荐

  1. (JAVA学习笔记) 类的继承,super,方法的重写,多态

    文章目录 类的继承,super,方法的重写,多态 1.类的继承 代码演示: 2.super和this 代码演示: 3.方法的重写 代码演示: 4.多态 代码演示: 类的继承,super,方法的重写,多 ...

  2. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  3. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

  4. (十)Core Java 面向对象(封装,继承,多态,接口) -02 (96)

     目录 :        24 ). 面向对象(聚集关系) 25 ). 面向对象(子父类中变量的特点) 26 ). 面向对象(子父类中函数的特点-覆盖) 27 ).  面向对象(子父类中构造函数的特点 ...

  5. 面向对象的三大特征:封装 继承 多态

    封装: 封装的概念: 代码的整合, 封装的层次: 函数的封装: 把一组操作整合在一起 类的封装: 把属性和方法整合在一起 结构的封装:根据操作的性质(模型/控制操作/交互视图)进行结构设计封装 ...

  6. python多态的三种表现形式_python小结----面向对象的三大特征(封装,继承,多态)

    面向对象的三大特征: 封装,继承,多态 面向对象的编程思想核心:高类聚,低耦合–程序的设计模式范畴 封装 什么是封装: 在面向对象编程的思想中,对代码进行高度封装,封装又叫包装 封装就是指将数据或者函 ...

  7. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  8. Java继承多态经典案例分享

    今天动力节点java培训机构小编为大家分享Java继承多态经典案例,希望通过此文能够帮助到大家,下面就随小编一起看看Java继承多态经典案例. public class A { public Stri ...

  9. Python的继承多态

    Python的继承多态 文章目录 Python的继承多态 一.私有属性和私有方法 01. 应用场景及定义方式 02. 伪私有属性和私有方法 二.单例 01. 单例设计模式 单例设计模式的应用场景 02 ...

  10. python-类继承多态

    python-类继承多态 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. class car:'车的重量与驾驶方法类'car ...

最新文章

  1. android 应用变量,Android全局应用变量的使用
  2. java管理系统用怎么框架做_java 使用servlet做学生管理系统(无框架)
  3. android相册管理,Piktures - 最优雅的相册管理 - Android 应用 - 【最美应用】
  4. ICCV2021 香港理工、阿里达摩院提出RealVSR:视频超分任务中的新数据集与损失方案...
  5. oracle 安装ora 27102,Oracle ora-27102 错误
  6. 专业级的WPF条形码控件
  7. easyui学习笔记3—在展开行内的增删改操作
  8. git拉取github上的分支和本地分支提交到github
  9. 【数字信号】基于matlab CEEMD数字信号分解【含Matlab源码 1383】
  10. 「每天一道面试题」Redis的优势有哪些?
  11. 数学建模之线性规划问题与LINGO软件的使用
  12. 【听课笔记】复旦大学遗传学_08遗传分析方法
  13. 计算机usb接口无法读取,USB设备识别不了,USB接口无法识别设备怎么办
  14. 智能分数计算机在线使用,作业帮智能计算器在线使用
  15. 《别让这种习惯毁掉你的一生,改变他!》
  16. 【css】fa图标变细
  17. 苹果净利润同比下滑19%,大中华区下滑30%;养老基金将入股市投资,首批可能达2000亿元
  18. html5 audio样式修改,HTML5中 audio的样式设置
  19. 顽固的计算机老师,电脑运行很慢 四招教你清除电脑系统里的那些“顽固垃圾”...
  20. Appium+Java模拟手机按键

热门文章

  1. 数据库实时同步到另一个数据库-数据库实时同步到另一个数据库文档
  2. Linux那些事儿 之 戏说USB(19)设备
  3. 关于QOSEC病毒的...不知道名字..已经搞掂
  4. AGM AG32VF系列MCU选型指南
  5. MPC5634的eTPU模块学习笔记(一)
  6. 语音直播系统社交源码——走红的背后是哪些因素在支持
  7. 华为mateX2和OPPO Find N 哪个好
  8. JAVA短信接口代码,实现发送短信验证码
  9. MySQL数据库主从复制与读写分离(图文详解!)
  10. 基于UDP的帧同步网络方案(基础)