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

深圳网站开发专业团队广州番禺怎么样

深圳网站开发专业团队,广州番禺怎么样,网站都需要域名备案吗,黄山旅游最佳路线目录 一、概念二、多态实现的条件三、向上转型和向下转型3.1 向上转型3.2 向下转型 四、重写和重载五、理解多态5.1练习#xff1a;5.2避免在构造方法中调用重写的方法#xff1a; 欢迎来到权权的博客~欢迎大家对我的博客提出指导这是我的博客主页#xff1a;点击 一、概念… 目录 一、概念二、多态实现的条件三、向上转型和向下转型3.1 向上转型3.2 向下转型 四、重写和重载五、理解多态5.1练习5.2避免在构造方法中调用重写的方法 欢迎来到权权的博客~欢迎大家对我的博客提出指导这是我的博客主页点击 一、概念 通俗来说就是多种形态具体点就是去完成某个行为当不同的对象去完成时会产生出不同 的状态。 二、多态实现的条件 在java中要实现多态必须要满足如下几个条件缺一不可 必须在继承体系下子类必须要对父类中方法进行重写通过父类的引用调用重写的方法 三、向上转型和向下转型 3.1 向上转型 三种向上转型的方式 1.直接赋值 Animals animalsnew Dog(小狗,6);2.方法的传参 public static void func(Animals animal){}public static void main(String[] args) {Dog dognew Dog(x,6);func(dog);}3.返回值 public static Animals func2(){Dog dognew Dog(x,56);return dog;}public static void main(String[] args) {Animals animalsfunc2();} }缺点通过父类的引用不能调用子类的方法 3.2 向下转型 向下转型无非就是把一个父类引用放着子类对象然后强转成对应的子类类型在赋值给子类引用也就是将父类引用还原成子类对象。 class TestAnimal {public static void main(String[] args) {//向下转型 - 不安全//instanceof 判断animal引用的对象是不是Dog类型的如果是则为 true 不是则为 falseAnimal animal new Dog(王五, 12);if (animal instanceof Dog) {Dog dog (Dog)animal;dog.eat();}} }四、重写和重载 重写(override)也称为覆盖。重写是子类对父类非静态、非private修饰非final修饰非构造方法等的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变核心重写重写的好处在于子类可以根据需要定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。 【方法重写的规则】 子类在重写父类的方法时一般必须与父类方法原型一致返回值类型方法名 (参数列表) 要完全一致被重写的方法返回值类型可以不同但是必须是具有父子关系的。 访问权限不能比父类中被重写的方法的访问权限更低。例如如果父类方法被public修饰则子类中重写该方法就不能声明为 protected父类被static、private修饰的方法、构造方法都不能被重写。 重写的方法, 可以使用Override注解来显式指定. 有了这个注解能帮我们进行一些合法性校验. 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写. 在子类中对父类的方法进行重写 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。 public class TestMethod { public static void main(String[] args) { add(1, 2); // 调用add(int, int) add(1.5, 2.5); // 调用add(double, double) add(1.5, 2.5, 3.5); // 调用add(double, double, double) } public static int add(int x, int y) { return x y; } public static double add(double x, double y) { return x y; } public static double add(double x, double y, double z) { return x y z; } }【重写和重载的区别】 五、理解多态 可以看到animals引用的对象是不一样的但是调用的是同一个方法此时表现出的不同现象我们叫做多态。 5.1练习 打印指定不同图案(多态实现) public class Drawing {public void draw() {System.out.println(画图);} } class DrawCircle extends Drawing {Overridepublic void draw() {System.out.print(⚪);} } class DrawFlower extends Drawing {Overridepublic void draw() {System.out.print(❀);} } class DrawTriangle extends Drawing {Overridepublic void draw() {System.out.print(▲);} }第一种方法用 for-each语句 class TestDraw {//方法一使用 循环 if elsepublic static void draw1() {DrawTriangle triangle new DrawTriangle();DrawFlower flower new DrawFlower();DrawCircle circle new DrawCircle();String[] shapes {Triangle, Flower, Flower, Circle, Flower, Triangle};//增强for循环遍历数组for (String s : shapes) {if (s.equals(Triangle)) {triangle.draw();} else if (s.equals(Flower)) {flower.draw();} else if (s.equals(Circle)) {circle.draw();}}}public static void main(String[] args) {draw1();} }第二种用多态 class TestDraw {public static void draw2() {Drawing[] shapes { new DrawTriangle(), new DrawFlower(), new DrawFlower(),new DrawCircle(), new DrawFlower(), new DrawTriangle()};for (Drawing s : shapes) {s.draw();}}public static void main(String[] args) {draw2();} }多态部分的优点 可以有效降低代码复杂度避免出现多个 if else可扩展性更强如果要新增打印也更简单 多态的缺点 属性没有多态性当父类属性和子类属性同名通过父类引用只能调用父类自己的成员属性构造方法也没有多态性 5.2避免在构造方法中调用重写的方法 class A {public A() {func();}public void func() {System.out.println(A.func());} } class B extends A {private int num 1;Overridepublic void func() {System.out.println(B.func() num);} } public class Test {public static void main(String[] args) {A b new B();} }可以看到构造 D 对象的同时, 会调用 B 的构造方法。 B 的构造方法中调用了 func 方法, 此时会触发动态绑定, 会调用到 D 中的 func此时 D 对象自身还没有构造, 此时 num 处在未初始化的状态, 值为 0.。 如果具备多态性num的值应该是1.所以在构造函数内尽量避免使用实例方法除了final和private方法。 结论: “用尽量简单的方式使对象进入可工作状态”, 尽量不要在构造器中调用方法(如果这个方法被子类重写, 就会触发动态绑定, 但是此时子类对象还没构造完成), 可能会出现一些隐藏的但是又极难发现的问题。 欧耶我学会啦
http://www.dnsts.com.cn/news/277936.html

相关文章:

  • 网站建设与维护 电子版比一网站建设
  • 网站怎么更改布局建材装修网站建设
  • 百度网站的总结提升学历教育
  • 网站数据丢失景区门户网站建设方案
  • 手机网站模板更改vi设计公司 北京
  • 做家电网站好做58网站空调维修接单怎么样
  • 公司建站费用百度seo和sem的区别
  • 网站诚信建设php与dw怎么做校园网站
  • phpcms网站转移孝感网站设计
  • 专业网站建设公司兴田德润信任高怎么把产品推广到各大平台
  • 做网站至少要花多少钱做设计常用网站有哪些
  • 网站建设 宜宾上海抖音seo
  • 辽宁省朝阳市做网站惠州seo代理计费
  • 建设移动端网站专业网页制作的帮手
  • 自己的域名可以转给做网站的账号吗成都职业培训网络学院
  • 网站源码大全免费的app开发方式有哪些
  • 自发购卡网站在吗做防红链接在线生成
  • 现代化的中国风网站提供网站建设教程的网站
  • 南宁定制网站制作网络公司搜索指数
  • 网站栏目框架成都手机网站建设哪家公司好
  • 公司网站建设合同书企业宣传海报设计制作
  • 门户网站后台管理系统模板宁波专业网站建设公司
  • 网站开发服务协议号卡分销系统搭建
  • 做网站是不是需要服务器在网站上做播放视频广告是否违法
  • 国外优秀的html5网站网站是怎么制作的
  • 免费建网站电话腾讯云远程安装wordpress
  • 北京住总第一开发建设有限公司网站首页wordpress搬家步骤
  • 做淘宝网站用什么软件有哪些怎么做类似淘宝的网站
  • 合肥微信网站网站建设框架都有哪些
  • 古田路9号设计网站个人备案企业网站