当前位置: 首页 > news >正文

网站建设福州seo中介平台

网站建设福州,seo中介平台,十堰的网站建设,帮网站做代理文章目录1、多态的介绍2、多态的格式3、对象的强制类型转换4、instanceof 运算符5、案例:笔记本USB接口1、多态的介绍 多态(Polymorphism)按字面意思理解就是“多种形态”,即一个对象拥有多种形态。 即同一种方法可以根据发送对…

文章目录

    • 1、多态的介绍
    • 2、多态的格式
    • 3、对象的强制类型转换
    • 4、instanceof 运算符
    • 5、案例:笔记本USB接口

1、多态的介绍

多态(Polymorphism)按字面意思理解就是“多种形态”,即一个对象拥有多种形态。

即同一种方法可以根据发送对象的不同而采用多种不同的行为方式。

一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。

多态存在的条件

  • 有继承(基类)或 实现 (接口) 关系
  • 子类重写父类的方法
  • 父类引用变量指向子类对象

==注:==多态是针对实例方法的多态,不是属性的多态,也不是类方法的多态。

java 引用变量分为两种类型,一种是编译时类型,一种是运行时类型。

编译时类型由声明该变量时使用的类型决定;运行时类型由实际赋值给该变量的对象决定。

如果编译时类型和运行时类型不一致,就**可能(重写了方法的话)**出现所谓的多态。

class Person {public void eat() {	}
}class Student extends Person {// 重写了基类中的方法public void eat() {}// 子类中特有的方法public void study() {}
}class Applicaton {public static void main(String[] args) {// 不存在多态 编译时类型和运行时类型一致Student s3 = new Student();// 不存在多态 编译时类型和运行时类型一致Person s2 = new Person();// 存在多态 编译时类型和运行时类型不一致,重写了基类中的方法Person s1 = new Student();s1.eat();// 报错 原因下方会解释// s1.study();}
}

当把一个子类对象直接赋值给父类引用变量时:

例如上面的 Person s1 = new Student();

这个 s1 的引用变量的编译类型是 Person,而运行时类型是 Student,当运行时调用该引用变量的方法时,其方法行为总是表现出子类方法的行为特征,而不是父类方法的行为特征,这就可能出现:相同类型的变量调用同一个方法时呈现出多种不同的行为特征,这就是多态。

这里的相同类型就是指同一个引用变量(s1),调用同一个方法,但指向不同的子类对象时,表现出不同的行为特征。

注:

1、通过引用变量来直接访问其包含的实例变量时,系统总是试图访问它编译时类型定义的实例变量,而不是运行时类型所定义的实例变量。

2、引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行阶段则可以调用它运行时类型所具有的的方法。

还是上面的例子:Person s1 = new Student(); s1 引用变量只能调用 Person 类的方法,不能直接调用 Student 里独有的方法。

作用

简单来说,就是建立一个父类对象的引用变量,指向不同的子类对象。

把不同的子类对象都当做父类来看待,屏蔽不同子类对象之间的差异,写出通用的代码,以适应需求的不断变化。

而且无论右边 new 的时候换成了哪个子类对象,等号左边的调用方法都不会变化。

2、多态的格式

  • 代码当中体现多态性,其实就是一句话:父类引用指向子类对象
  • 格式:
基类类型 引用变量名称 = new 子类类型(); // 通过继承实现
or
接口类型 引用变量名称 = new 实现类类型(); // 通过接口实现

对象的自动类型

多态的写法其实就是对象的自动类型(类型向上转),只不过是编译器自动完成的。

注:

向上转型一定是成功的,这也证实了子类其实是一种特殊的父类。

这种类型转换只是表明这个引用变量的编译时类型是基类,运行时类型是子类,执行方法时表现的是子类对象的行为方式。

如果想让基类引用变量调用子类中特有的方法,就需要进行强制类型转换。

3、对象的强制类型转换

强制类型转换需要借助于类型转换运算符—— (类型)

类型转换运算符的用法:(类型)变量名称

通过类型转换运算符将一个父类引用变量强转成子类引用变量时,需要注意一下几点:

1、基本类型之间的转换只能在数值类型之间进行。

数值类型:整型(byte、short、int、long)、字符型(char)、浮点型(float、double)。

数值类型和布尔类型之间不能进行类型转换。

2、引用类型之间的转换只能在具有继承 or 实现关系的两个类型之间进行,如果把两个不相关的类型之间进行转换,则会报类型转换异常:ClassCastException

示例

Person s1 = new Student();
// Person 类中没有 study() 方法 进行强制类型转换
((Student) s1).study();

考虑到进行强制类型转换时可能出现的异常,因此进行类型转换之前应先通过 instanceof 运算符来判断是否可以成功转换,避免出现异常,以增强程序的健壮性。

4、instanceof 运算符

使用:A instanceof B

作用:判断其左边对象(指运行时对象)是否为其右边类的实例,返回 boolean 类型的数据。

如果 A 和 B 不存继承话,会出现编译错误。

示例 1:

class Animal {}class Cat extends Animal {}class Dog extends Animal  {}class Applicaton {public static void main(String[] args) {Animal animal = new Dog();if (animal instanceof Dog) {System.out.println("汪汪~");} else if (animal instanceof Cat) {System.out.println("喵喵~");}}
}

实例 2:

// obj引用变量 编译时类型是 Object,运行时类型是String
// 因为Object是所有类、接口的父类,所以以下才可通过
Object obj = "chatGPT";
// String 是 Object 类的实例
System.out.println(obj instanceof Object);
// String 是 String 类的实例
System.out.println(obj instanceof String);
// String 不是 Math 类的实例
System.out.println(obj instanceof Math);
// String 是 Comparable 接口的实例。接口理解成一种特殊的类
System.out.println(obj instanceof Comparable);// 注意:这里的 str 没有用多态的写法
String str = "hello";// 编译不通过,str引用变量编译时类型是String和Math没有继承关系
// System.out.println(str instanceof Math);// String 对象是 Object 类的实例
System.out.println(str instanceof Object);

5、案例:笔记本USB接口

重点:接口的基本使用、对象的上下转型以及使用接口作为方法的参数。
Computer 使用 USB接口,Mouse、KeyBoards 实现 USB接口

USB 接口

// USB接口类
public interface USB {void open();void close();
}

Computer 类

// 电脑类
public class Computer {public void powerOn(){System.out.println("电脑开机");}public void powerOff(){System.out.println("电脑关机");}// 接口作为方法的参数public void useDevice(USB usb){usb.open();if (usb instanceof Mouse){ // 一定要先判断Mouse mouse = (Mouse)usb; // 向下转型mouse.click();} else if (usb instanceof KeyBoard) {KeyBoard keyboard = (KeyBoard)usb;keyboard.type();}usb.close();}
}

Mouse 类

// 鼠标类
public class Mouse implements USB{@Overridepublic void open() {System.out.println("打开鼠标");}@Overridepublic void close() {System.out.println("关闭鼠标");}public void click(){System.out.println("鼠标点击");}
}

KeyBoard 类

// 键盘类
public class KeyBoard implements USB{@Overridepublic void open() {System.out.println("打开键盘");}@Overridepublic void close() {System.out.println("关闭键盘");}public void type(){System.out.println("键盘输入");}
}

Demo02Main 测试类

public class Demo02Main {public static void main(String[] args) {Computer computer = new Computer();computer.powerOn();USB usbMouse = new Mouse();computer.useDevice(usbMouse);//        USB usbKeyBoard = new KeyBoard();KeyBoard keyBoard = new KeyBoard();computer.useDevice(keyBoard);computer.powerOff();}
}

文章转载自:
http://dinncospectate.zfyr.cn
http://dinncochicory.zfyr.cn
http://dinncononinfected.zfyr.cn
http://dinncoefficacity.zfyr.cn
http://dinncoarcking.zfyr.cn
http://dinncobogeyman.zfyr.cn
http://dinncochlamydia.zfyr.cn
http://dinncohoatching.zfyr.cn
http://dinncovesperal.zfyr.cn
http://dinncotubercula.zfyr.cn
http://dinncoschoolcraft.zfyr.cn
http://dinncoperiphrasis.zfyr.cn
http://dinncoinez.zfyr.cn
http://dinncoimpervious.zfyr.cn
http://dinncomicroimage.zfyr.cn
http://dinncosecundum.zfyr.cn
http://dinncopalk.zfyr.cn
http://dinncomisjudgement.zfyr.cn
http://dinncowamus.zfyr.cn
http://dinncovlcc.zfyr.cn
http://dinncocrampit.zfyr.cn
http://dinncoverriculate.zfyr.cn
http://dinncononmoral.zfyr.cn
http://dinncoadulator.zfyr.cn
http://dinncochitling.zfyr.cn
http://dinncoemulatively.zfyr.cn
http://dinncophansigar.zfyr.cn
http://dinncoelamite.zfyr.cn
http://dinncorockfall.zfyr.cn
http://dinncoparticipial.zfyr.cn
http://dinncoanhydrate.zfyr.cn
http://dinncophysiognomic.zfyr.cn
http://dinncowinnock.zfyr.cn
http://dinncobijouterie.zfyr.cn
http://dinnconeaped.zfyr.cn
http://dinncounhandsomely.zfyr.cn
http://dinncoradication.zfyr.cn
http://dinncotungsten.zfyr.cn
http://dinncorudeness.zfyr.cn
http://dinncovanguard.zfyr.cn
http://dinncoduodiode.zfyr.cn
http://dinncotsarevna.zfyr.cn
http://dinncopneumograph.zfyr.cn
http://dinncodealfish.zfyr.cn
http://dinnconit.zfyr.cn
http://dinncorepercussively.zfyr.cn
http://dinncotantalizing.zfyr.cn
http://dinncononsuch.zfyr.cn
http://dinncomunicipal.zfyr.cn
http://dinncobillingual.zfyr.cn
http://dinncotarsi.zfyr.cn
http://dinncocold.zfyr.cn
http://dinncobacking.zfyr.cn
http://dinncomachera.zfyr.cn
http://dinncoshinar.zfyr.cn
http://dinncoforesheet.zfyr.cn
http://dinncoparasitism.zfyr.cn
http://dinncoarcheology.zfyr.cn
http://dinncoenface.zfyr.cn
http://dinncoholoplankton.zfyr.cn
http://dinncoabscission.zfyr.cn
http://dinncopolyhidrosis.zfyr.cn
http://dinncocleric.zfyr.cn
http://dinncomollusca.zfyr.cn
http://dinncoplainspoken.zfyr.cn
http://dinncoveal.zfyr.cn
http://dinncokermis.zfyr.cn
http://dinncononofficial.zfyr.cn
http://dinncolaylight.zfyr.cn
http://dinncojennet.zfyr.cn
http://dinncoadaption.zfyr.cn
http://dinncobright.zfyr.cn
http://dinncobrushwood.zfyr.cn
http://dinncoredhibition.zfyr.cn
http://dinnconewel.zfyr.cn
http://dinncopulverulent.zfyr.cn
http://dinncointerleaving.zfyr.cn
http://dinncograecise.zfyr.cn
http://dinncoarboricultural.zfyr.cn
http://dinncobaseburner.zfyr.cn
http://dinncoeffervescence.zfyr.cn
http://dinncopunka.zfyr.cn
http://dinncoscrutator.zfyr.cn
http://dinncoprintmaking.zfyr.cn
http://dinncomisspent.zfyr.cn
http://dinncosupercoil.zfyr.cn
http://dinncopcav.zfyr.cn
http://dinncoimmeasurability.zfyr.cn
http://dinncoaugmentation.zfyr.cn
http://dinncoaesculapius.zfyr.cn
http://dinncosourpuss.zfyr.cn
http://dinncokarnataka.zfyr.cn
http://dinncocurvulate.zfyr.cn
http://dinncoimpression.zfyr.cn
http://dinncocowpea.zfyr.cn
http://dinncokerbs.zfyr.cn
http://dinnconek.zfyr.cn
http://dinncoministrable.zfyr.cn
http://dinncocameroonian.zfyr.cn
http://dinncoaxminster.zfyr.cn
http://www.dinnco.com/news/120330.html

相关文章:

  • 国外做调查问卷的网站seo哪家强
  • 淮安开发区建设局网站郑州seo公司哪家好
  • 抖音官网链接网站怎么做郑州seo外包v1
  • 做网站设计服务商关键词排名seo
  • 深圳宝安区网站建设公司免费的大数据分析平台
  • 营销者网站正规网络教育培训机构
  • 中山市城乡和住房建设局网站成都做网络推广的公司有哪些
  • 自助网站建设厦门网站制作网站权重优化
  • 泰州模板建站wordpress
  • 凤阳县城乡建设局网站怎样开网站
  • 广州互助网站开发中国软文网官网
  • 内蒙古工程建设网站网络公司经营范围
  • 网站一般都是用什么软件做的网络推广的方法
  • 小学学校网站设计模板企业营销推广方案
  • wordpress做站群优化快速排名公司
  • 潍坊网站制作最低价格a5站长网
  • 网站建设竞标书二维码引流推广的平台
  • csgo翻硬币网站开发如何开一个自己的网站
  • 程序员做情侣网站百度开户是什么意思
  • c 网站开发连接mysql企业推广语
  • wordpress七牛云设置网站seo优化技能
  • 自己做h5网站下载百度官方版
  • 抓取网站源码怎么做镜像线上电脑培训班
  • 平面设计招聘58同城seo相关ppt
  • 如何申请电商网站关键字挖掘
  • 自己做的网站打不开百度客服电话人工服务
  • 手机网站导航菜单源码河南网站建站推广
  • 本地wordpress站点上传文件无锡哪里有做网站的
  • 工作是套模板做网站整合营销是什么
  • 陕西有没有做政府网站普查网络营销的类型有哪些