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

滨州网站建设腾度开发平台app

滨州网站建设腾度,开发平台app,网站建设 设计那种连接线厂家,一般网站设计多大宽度目录 一.向上转型 直接赋值 总结#xff1a; 通过传参 通过返回值 二.向下转型 instanceof 一.向上转型 向上转型其实就是创建一个子类对象#xff0c;并将其当作父类对象来使用#xff0c;一般语法格式如下#xff1a; 父类类型 对象名 new 子类类型() 一般有以… 目录 一.向上转型 直接赋值  总结 通过传参 通过返回值 二.向下转型 instanceof  一.向上转型 向上转型其实就是创建一个子类对象并将其当作父类对象来使用一般语法格式如下 父类类型 对象名 new 子类类型() 一般有以下三种使用场景 直接赋值  我们这里以父类为Animal类举例并且有一个Cat类来继承他  class Animal {String name;int age;//构造方法public Animal(String name,int age) {this.name name;this.age age;}public void eat() {System.out.println(this.name 正在吃食物~~~);} } class Cat extends Animal {//构造方法public Cat(String name,int age) {super(name,age);} } 在这种情况下我们用父类对象直接引用子类对象不但程序不会报错反而还可以正常调用父类中的成员方法 public static void main(String[] args) {Cat cat new Cat(布偶,3);Animal animal1 cat;animal1.eat();Animal animal2 new Cat(橘猫,2);animal2.eat();} 输出结果  那能不能调用子类的成员方法呢我们在子类中新添加一个sleep方法 class Animal {String name;int age;//构造方法public Animal(String name,int age) {this.name name;this.age age;}public void eat() {System.out.println(this.name 正在吃食物~~~);} } class Cat extends Animal {//构造方法public Cat(String name,int age) {super(name,age);}//新添加的子类方法public void sleep() {System.out.println(this.name 正在睡觉......);} } 我们尝试用上述过程来调用以下子类的中的方法 public static void main(String[] args) { Animal animal new Cat(橘猫,2);animal.eat();animal.sleep(); } 但是等我们写好了后就会发现编译器报错了  也就是说 使用向上转型后我们可以正常调用父类中的成员方法但是不能调用子类中自己的方法 但是要解决上述问题还是很简单的当我们在子类中重写父类方法后我们就可以调用子类方法了这也就是我们多态的实现 class Animal {String name;int age;//构造方法public Animal(String name,int age) {this.name name;this.age age;}public void eat() {System.out.println(this.name 正在吃食物~~~);}public void sleep() {} } class Cat extends Animal {//构造方法public Cat(String name,int age) {super(name,age);}public void sleep() {System.out.println(this.name 正在睡觉......);} } public static void main(String[] args) {Animal animal new Cat(橘猫,2);animal.eat();animal.sleep();} 现在我们就可以正常调用输出了 总结 当我们通过向上转型新建了一个对象后我们可以通过这个对象来访问父类中的方法但是不能访问子类中自己的方法除非我们在子类中重写父类方法也就是说当一个方法只有在父类和子类中都出现的情况下我们才能访问子类中的这个方法 通过向上转型新建的对象可以访问的方法范围是 父类有 子类没有父类有 子类也有  不能访问的范围是 父类没有 子类也没有父类没有 但子类有  通过传参 class Animal {String name;int age;//构造方法public Animal(String name,int age) {this.name name;this.age age;}public void eat() {System.out.println(this.name 正在吃食物~~~);} } class Dog extends Animal {//构造方法public Dog(String name,int age) {super(name,age);}public void eat(){System.out.println(this.name 正在吃狗粮~~~);} } class Cat extends Animal {//构造方法public Cat(String name,int age) {super(name,age);}public void eat(){System.out.println(this.name 正在吃猫粮~~~);} } public static void fun(Animal animal) {animal.eat();} fun(new Dog(哈士奇,2)); fun(new Cat(橘猫,2)); 我们通过一个方法来接受一个父类对象然后通过这个父类对象来调用eat方法当我们传入的参数是一个子类对象的时候就相当于我们用父类对象做参数来接到了子类对象也就是发生了向上转型 输出结果 通过返回值 class Animal {String name;int age;//构造方法public Animal(String name,int age) {this.name name;this.age age;}public void eat() {System.out.println(this.name 正在吃食物~~~);} } class Dog extends Animal {//构造方法public Dog(String name,int age) {super(name,age);}public void eat(){System.out.println(this.name 正在吃狗粮~~~);} } class Cat extends Animal {//构造方法public Cat(String name,int age) {super(name,age);}public void eat(){System.out.println(this.name 正在吃猫粮~~~);} }public static Animal fun1(Animal animal) {return new Cat(布偶,3);}public static Animal fun2(Animal animal) {return new Dog(哈士奇,2);} 我们用父类对象做返回值类型但是我们返回的是子类对象这也就相当于发生了向上转型 向上转型的优点让代码实现更简单灵活。 向上转型的缺陷不能调用到子类特有的方法  二.向下转型 将一个子类对象经过向上转型之后当成父类方法使用再无法调用子类的方法但有时候可能需要调用子类特有的方法此时将父类引用再还原为子类对象即可即向下转换 class Animal {String name;int age;//构造方法public Animal(String name,int age) {this.name name;this.age age;}public void eat() {System.out.println(this.name 正在吃食物~~~);}public void sleep() {} } class Cat extends Animal {//构造方法public Cat(String name,int age) {super(name,age);}public void sleep() {System.out.println(this.name 正在睡觉......);} } public class Test_4 {public static void main(String[] args) {Animal animal new Cat(橘猫,2);Cat cat new Cat(布偶,2);animal.eat();animal.sleep();cat (Cat)animal;cat.eat();cat.sleep();} } 输出结果 instanceof  向下转型用的比较少而且不安全万一转换失败运行时就会抛异常。Java中为了提高向下转型的安全性引入了 instanceof  如果该表达式为true则可以安全转换  public static void main(String[] args) {Cat cat new Cat(元宝,2);Dog dog new Dog(小七, 1);// 向上转型Animal animal cat;animal.eat();animal dog;animal.eat();if(animal instanceof Cat) {cat (Cat)animal;}if(animal instanceof Dog) {dog (Dog)animal;} } 对于instanceof的详细信息可以查看官方资料 Chapter 15. Expressions (oracle.com)
http://www.dnsts.com.cn/news/101024.html

相关文章:

  • 网站建设的几大要素网站群系统破解版
  • 企业网站设计要求网站建设所需要的软件
  • 万网 网站建设方案书网站创建一般创建哪种类型
  • 泉州营销型网站建设网站建设需要知识
  • 运维网站建设做网站用哪几个端口 比较好
  • 网站建设专家价格移动端 pc网站开发
  • 佛山网站建设玲念建站电商网站开发意义
  • 天津市建设与管理网站做设计的兼职网站有哪些
  • 免费的求职简历模板网站精准推广
  • 在凡科网申请的网站设置网页访问密码wordpress怎么和手机连接数据库
  • 个人业务网站后台给公司做个网站多少钱
  • 自行创建网站的平台北京做网站需要多少钱
  • 网站内容建设要求 age06阿里云万网域名查询
  • 高密做网站seo排名优化软件有用吗
  • 公司网站建设找谁一级a做爰片完整网站
  • 网站建设用什么框架好怎么做一个网站的logo设计图
  • 那个网站做logo兼职网络运营策划
  • 嘉兴网站制作网站建设自助设计网站
  • 一个网站开发的流程图wordpress平铺图片
  • 建设部网站危房鉴定标准规定p2p贷款网站开发
  • jsp商务网站开发推广发帖网站
  • 如何删除自己建的网站公司注册资金实缴和认缴的区别
  • 高权重网站出售深圳几个区
  • 网站备案流程多少钱90设计网官网登录
  • 济宁网站定制公司wordpress安装脚本打不开
  • 达州 网站建设福州网站建设哪家好
  • 做网站用虚拟主机好不好广州网站建设360网站优化
  • 网站怎样做权重自己做的网站在浏览器上显示不安全吗
  • 网站建设与运行电视剧排行榜
  • 宁波网站制作怎样网页设计与制作教程杨选辉