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

网站建设与网页的区别租车公司网站模板

网站建设与网页的区别,租车公司网站模板,做响应式网站是不是都用rem,小程序开发制作官网个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得#xff0c;欢迎大家在评论区讨论#x1f48c; 目录 一、什么是多态二、多… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得欢迎大家在评论区讨论 目录 一、什么是多态二、多态的实现条件三、重写重载和重写的方法 四、向上转型和向下转型4.1向上转型4.2向下转型 一、什么是多态 多态的概念简单来说多态就是指同一个方法名在不同的对象上有不同的行为。 多态实现的核心概念是方法的重写和动态绑定。当子类继承父类并重写了父类的方法时可以通过父类引用指向子类对象并调用该方法此时会根据对象的实际类型来决定调用哪个类的方法从而实现多态性。 二、多态的实现条件 在java中要实现多态的话有3个条件且这三个条件缺一不可 1.必须是在继承体系下 2.子类必须要对父类中的方法进行重写 3.通过父类的引用调用重写的方法 那多态具体是如何体现的呢 当传递不同类对象时会调用对应类中的方法。 三、重写 重写概念允许子类重新定义父类中已经存在的方法并提供自己特定的实现。 方法重写的规则如下 子类在重写父类方法时返回值类型、方法名、参数列表要完全相同。被重写的方法返回值类型可以不同但是必须是具有父子类关系的。 重写是子类对父类非private修饰、非final修饰、非构造方法等的实现过程进行重新编写。所以如果父类的方法被private、final、static修饰的话子类就无法对父类的方法重写。被final修饰的方法称为密封方法不能被重写访问权限不能比父类中被重写的方法的访问权限更低。构造方法不能被重写构造方法只能被重载。当子类重写父类的方法时可以使用Override注解来提醒编译器进行检查确保方法名和参数正确地覆盖了父类的方法。 下面是方法重写的代码演示请看 class Person{public String name;public int age;Person(String name,int age){this.name name;this.age age;System.out.println(Person(String name,int age));}public void fun(){System.out.println(name,你今天开不开心);} } class Student extends Person {public int mark;public Student(String name,int age,int mark){super(name,age);this.mark mark;System.out.println(Student(String name,int age,int mark));}Overridepublic void fun(){System.out.println(name今天的作业太多了,不是很开心);} } class Teacher extends Person{public int wages;public Teacher(String name,int age,int wages){super(name,age);this.wages wages;System.out.println(Teacher(String name,int age,int wages);} } public class Test {public static void main(String[] args) {Student s1 new Student(Daming,18,100);s1.fun();} }运行结果如下 重载和重写的方法 重载重写方法名称必须相同必须相同返回值类型返回值类型不做要求返回值可以相同但是不同时必须构成父子类关系参数列表参数列表不同个数、数据类型、顺序参数列表相同范围重载的方法要在同一个类中被重写的类和要重写的类必须构成继承关系 四、向上转型和向下转型 4.1向上转型 向上转型创建一个子类对象将其当成父类对象来进行使用。 语法格式父类类型 对象名 new 子类类型(); 向上转型的使用场景有三种直接赋值、方法传参、方法返回。 这里直接以代码进行举例了 class Person{public String name;public int age;Person(String name,int age){this.name name;this.age age;System.out.println(Person(String name,int age));}public void fun(){System.out.println(name,你今天开不开心);} } class Student extends Person {public int mark;public Student(String name,int age,int mark){super(name,age);this.mark mark;System.out.println(Student(String name,int age,int mark));}Overridepublic void fun(){System.out.println(name今天的作业太多了,不是很开心);} } class Teacher extends Person{public int wages;public Teacher(String name,int age,int wages){super(name,age);this.wages wages;System.out.println(Teacher(String name,int age,int wages);} }public class Test {public static void main(String[] args) {Student s1 new Student(Lihua,21,150);// p1引用指向了s1Person p1 s1;// p1.mark; // error 无法访问因为Person中没有mark这个属性// 这里编译的时候编译器认为是访问的Person类中的fun(),但是// 程序运行的时候访问的是子类Student中的fun()// 此过程成为动态绑定s1.fun();} }这里要补充动态绑定和静态绑定两个概念。 静态绑定也称为前期绑定(早绑定)即在编译时根据用户所传递实参类型就确定了具体调用那个方法。典型代表函数重载。 动态绑定也称为后期绑定(晚绑定)即在编译时不能确定方法的行为需要等到程序运行时才能够确定具体调用那个类的方法。 下面代码就是向上转型的三种使用场景请看 class Person{public String name;public int age;Person(String name,int age){this.name name;this.age age;System.out.println(Person(String name,int age));}public void fun(){System.out.println(name,你今天开不开心);} } class Student extends Person {public int mark;public Student(String name,int age,int mark){super(name,age);this.mark mark;System.out.println(Student(String name,int age,int mark));}Overridepublic void fun(){System.out.println(name今天的作业太多了,不是很开心);} } class Teacher extends Person{public int wages;public Teacher(String name,int age,int wages){super(name,age);this.wages wages;System.out.println(Teacher(String name,int age,int wages));}public void fun(){System.out.println(name很开心,因为今天发工资了);} }public class Test {public static void function(Person p){p.fun();}// 向上转型方式三:返回任意子类对象public static Person function3(){return new Teacher(Simon,21,120);}public static void main(String[] args) {// 向上转型方式一:直接赋值(子类对象直接赋值给父类对象)// Person p1 new Student(Amy,22,99);// 向上转型方式二:方法的传参过程中也可以向上转型Student s new Student(Sam,23,25);function(s);Teacher t new Teacher(Tom,26,10000);function(t);} }运行结果如下 解释在function(Person p)方法中虽然一个引用调用一个方法但是因为引用所引用的对象不同导致调用这个方法所表现的行为不同。这种思想就是多态。 下面是向上转型的优缺点 优点让代码实现更简单灵活。 缺点不能调用到子类特有的方法。 4.2向下转型 重要的事情放前面向下转型是非常不安全的所以建议平时不要使用向下转型。 示例一 class Person{public String name;public int age;Person(String name,int age){this.name name;this.age age;System.out.println(Person(String name,int age));}public void fun(){System.out.println(name,你今天开不开心);} } class Student extends Person {public int mark;public Student(String name,int age,int mark){super(name,age);this.mark mark;System.out.println(Student(String name,int age,int mark));}public void getScore(){System.out.println(今天出成绩了);}Overridepublic void fun(){System.out.println(name今天的作业太多了,不是很开心);}} class Teacher extends Person{public int wages;public Teacher(String name,int age,int wages){super(name,age);this.wages wages;System.out.println(Teacher(String name,int age,int wages));}public void getWages(){System.out.println(今天发工资哈!);}public void fun(){System.out.println(name很开心,因为今天发工资了);} }public class Test {public static void main(String[] args) {Person p1 new Student(Donghua,21,112);// p1.getScore //error 因为这里只能访问Person类自己特有的方法Student s1 (Student)p1;s1.getScore(); //这里通过s1可以访问getScore方法} }这里把Person类型强转为子类Student类型。 示例二向下转型是指将父类类型的引用转换为子类类型的引用。在向下转型的过程中需要确保原始对象的实际类型是转换后的子类类型否则会抛出ClassCastException异常。 请看代码 class Person{public String name;public int age;Person(String name,int age){this.name name;this.age age;System.out.println(Person(String name,int age));}public void fun(){System.out.println(name,你今天开不开心);} } class Student extends Person {public int mark;public Student(String name,int age,int mark){super(name,age);this.mark mark;System.out.println(Student(String name,int age,int mark));}public void getScore(){System.out.println(今天出成绩了);}Overridepublic void fun(){System.out.println(name今天的作业太多了,不是很开心);}} class Teacher extends Person{public int wages;public Teacher(String name,int age,int wages){super(name,age);this.wages wages;System.out.println(Teacher(String name,int age,int wages));}public void getWages(){System.out.println(今天发工资哈!);}public void fun(){System.out.println(name很开心,因为今天发工资了);} }public class Test {public static void main(String[] args) {Person p1 new Student(Jame,21,115);Teacher t1 (Teacher)p1;t1.getWages();} }示例二运行结果如下 示例二解释首先创建了一个Student对象并将其赋值给了一个Person类型的变量p1。这是一种向上转型的操作可以安全地进行因为Student是Person的子类。 接着尝试将p1向下转型为Teacher类型即将其赋值给一个Teacher类型的变量t1。这是一种不安全的操作因为p1实际上是Student类型的对象。运行这段代码会抛出ClassCastException异常。 示例二解决方式请看代码 Person p1 new Student(Jame, 21, 115); if (p1 instanceof Teacher) {Teacher t1 (Teacher) p1;t1.getWages(); } else {System.out.println(p1不是Teacher类型的对象); }好了以上就是本文的全部内容啦就到这里吧 再见啦友友们
http://wiki.neutronadmin.com/news/454032/

相关文章:

  • 珠海网站建设方案外包中国建设银行重庆网站
  • 百度收录网站有什么好处哪里学网站建设与管理
  • 做网站需要会什么现在主流的网站开发平台有哪些
  • 怎样用别人的网站做修改wordpress推送百度升级
  • 外贸网站建设有哪些要求怎么做网站的软文推广
  • 网页制作与网站建设设计报告单仁营销网站的建设
  • 个人工作室网站2021年中国企业500强
  • 怎么建设公司小程序网站做销售找客户渠道
  • 网站编程软件有哪些网页设计布局有哪几种方法
  • 宿迁住房和城乡建设部网站有哪些网站可以做淘宝客
  • 策划与设计一个电子商务网站做国际物流需要自己的网站吗
  • 代理加盟网站影楼网站服务
  • 网站建设 验证码wordpress 副标题怎么加分类
  • 怎么制作网站教程步骤建设电子商务网站的目的
  • 手机 网站开发软件手机网站大全排行
  • 怎么做品牌推广网站wordpress获取文章列表分页
  • 定制建站方案福建建设人才市场官方网站
  • 在招聘网站做电话销售怎么样手机版网站与app
  • 遵义水网站建设织梦网站程序下载
  • 网站开发范围wordpress目录分站
  • 动物摄影网站长春网站建设解决方案
  • 泉州有哪些公司是做网站餐饮品牌网站建设
  • 什么样 个人网站 备案如何写一个wordpress主题
  • 郑州做网站元辰xp系统做局域网内网站
  • 青岛专业网站营销免费申请激活码
  • 河南网站关键词优化代理网络布线
  • 2023网站seo做集团网站的
  • 西安 网站 高端 公司友情链接交换软件
  • 网站直播间 是怎么做的江门北京网站建设
  • 环保局网站如何做备案证明高端网站建设 企业网站建站