Java面向对象之instanceof和类型转换
instanceof
- instanceof(类型转换):利用此关键字可以判断某一个对象是否是指定类的实例
格式:
对象 instanceof 类 返回boolean型
- 如果某个对象是某个类的实例,就返回true,否则返回false。
对象的多态性:指的是发生在继承关系类之中,子类和父类之间的转换。
- 向上转型(自动完成):父类 父类对象 = 子类实例;
- 向下转型(强制完成):子类 子类对象 = (子类)父类实例;
package OOP.Demo09;
public class Application {
public static void main(String[] args) {
//Object > String
//Object > Person > Student
//Object > Person > Teacher
//System.out.println(X instanceof Y);//能不能编译通过!通过:X和Y之间是否存在父子关系
Object object = new Student();
System.out.println(object instanceof Student);//true
System.out.println(object instanceof Person);//true
System.out.println(object instanceof Object);//true
System.out.println(object instanceof Teacher);//false
System.out.println(object instanceof String);//false
System.out.println("=================================");
Person person = new Student();
System.out.println(person instanceof Student);//true
System.out.println(person instanceof Person);//true
System.out.println(person instanceof Object);//true
System.out.println(person instanceof Teacher);//false
//System.out.println(person instanceof String);//编译报错
System.out.println("=================================");
Student student = new Student();
System.out.println(student instanceof Student);//true
System.out.println(student instanceof Person);//true
System.out.println(student instanceof Object);//true
//System.out.println(student instanceof Teacher);//编译报错
//System.out.println(student instanceof String);//编译报错
}
}
类型转换
- 父类引用指向子类的对象
- 把子类转换为父类,向上转型;
- 把父类转换为子类,向下转型——需要强制转换(可能会丢失一些方法)
- 方便方法的调用,减少重复的代码
万物皆有裂隙,那是光照进来的地方。
Java面向对象之instanceof和类型转换的更多相关文章
- Java面向对象的多态
Java中多态的概念是面向对象中除封装和继承外非常重要的知识点,也是Java面向对象三大特性最后一个特性 多态其实就是指对象存在的多种形态,多态分为引用多态和方法多态 引用多态的含义就是:父类的引用可 ...
- Java面向对象程序设计--与C++对比说明:系列3(Java 继承机制)
继承(inheritance)背后的核心思想是: bonus = b; } } Java没有像C++那样提供多继承机制,但提供了接口机制,在后面我们将详细探究接口机制的实现 ...
- Java面向对象 集合(上)
Java面向对象 集合(上) 知识概要: (1)体系概述 (2)共性方法 (3)迭代器 (4)list集合 (5)Set 集合 体系概述: 集 ...
- java面向对象的核心思想
java面向对象的特征之一:封装 1.封装性的使用 package edu.tongji.classdemo; /* 封装性 1.封装的目的:保护某些属性和方法不被外部所见 2.封装的实现 为属性和方 ...
- 面试求职中你需要了解的Java面向对象
从毕业到现在,笔试过好多场 也面了好多场, 一直想写一些东西给找工作的朋友,这篇文章结合个人经历讲解面试中的面向对象.里边有些实例个人以面试题的形式写出来,从程序角度去b帮助大家了解学习,最后希望大家 ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- 夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...
- Java面向对象——三大特性
Java面向对象——三大特性 摘要:本文主要介绍了面型对象的三大特性. 封装 什么是封装 封装,就是指一个类隐藏了对象的属性和实现细节,对自己的数据和方法进行访问权限控制,只允许某些类和对象进行访问和 ...
- Java 面向对象(七)多态
一.多态概述(Polymorphism) 1.引入 多态是继封装.继承之后,面向对象的第三大特性. 通过不同的事物,体现出来的不同的形态.多态,描述的就是这样的状态.如跑的动作,每个动物的跑的动作就是 ...
- Java——面向对象的特征三:多态性
2.5面向对象的特征三:多态性 2.5.1 关于java语言中的向上转型和向下转型 ①向上转型(upcasting) : 子--->父(自动类型转换) ②向下转型(downcasting) : ...
随机推荐
- [C++]模版特例化和模版偏特化
函数模版特例化 例子: //第一个版本;可以比较任意两个类型 template<typename T> int compare(const &T,const T&); // ...
- 送给vue初学者的 vue.js技巧
1.setTimeout/ setInterval 场景一 :this指向改变无法用this访问vue实例 mounted(){ setTimeout( function () { //setInte ...
- pdf转图片加水印压缩
''' pip install pymupdf pip install pillow ''' import os import uuid import fitz from PIL import Ima ...
- drf-认证、权限、频率、过滤、排序、分页
1.认证组件 1.1 局部认证 1.首先写两个接口,一个查询单个一个查询所有,我们利用视图扩展类和视图子类写在一个视图类上: views.py: from rest_framework.viewset ...
- CentOS7加入AD域(winbind)
作者:独笔孤行 官网: http://anyamaze.com 公众号:云实战 前言 AD域(Active Directory)是Windows服务器的活动目录,在目录中可以收录公司的电脑账 ...
- C# .NET 发展史
C#发展到现在已经20年左右了,之前发展都是按照.NET Framework的版本发展,直到.NET Framework4.8结束.后来以.NET Core的版本发展,直到.NET Core3.1.3 ...
- .NET依赖注入之一个接口多个实现
前言 最近又在项目中碰到需要将原本单实现的接口改造成多个实现的场景,这里记录一下常见的几种改法. 假设已经存在如下接口ICustomService和其实现CustomService,由于只有一种实现, ...
- OpenLayers多源数据加载
一.实验内容 栅格瓦片数据加载: 矢量数据加载: 矢量瓦片数据加载. 二.实验步骤 2.1 加载已经封装的在线瓦片地图 <!DOCTYPE html> <html lang=&quo ...
- 常用的hive sql
细节:sql 中有涉及到正则匹配函数的,要注意转义符号 因为在不同语言下正则匹配规则是否需要加转义符号是不同的,举例,regexp_replace 函数,在hive sql的正则匹配规则的 \d+ 需 ...
- linux系统安装MySQL服务,详细图文教程
注:linux系统在安装操作系统时,如果选择了开发工具和兼容库后,一般默认都会安装MySQL服务的部分程序包.如果我们要自定义的安装全新的MySQL服务,就必须先把这些已经安装的程序包都卸载掉.否则, ...