首页 > 其他分享 >对象类型和方法的重载

对象类型和方法的重载

时间:2023-09-27 23:07:10浏览次数:31  
标签:对象 子类 int add 类型 重载 方法

对象类型和方法的重载

今日份学习对象类型的转换,instanceof关键字的使用以及方法重载。

l 对象类型的转换

对象类型的转换主要包括向上转型和向下转型。

        i. 向上转型(子类→父类)

把子类类型的对象直接赋值给父类类型的对象,进而实现按照父类描述子类的结果。

父类类型的对象可以引用子类类型的对象,因为向上转型是将一个具象的类的对象转换成一个较抽象的类的对象。

在向上转型的过程中,父类的对象无法调用子类独有的属性或方法

       ii.向下转型(父类→子类)

运用向下转型,如果把一个较抽象的类的对象转换为一个较为具体的类的对象,这样的转型就会发生错误。因此,向下转型是不安全的。

但可以借助强制类型转换实现向下转换。

子类类型 子类对象=(子类类型)父类对象;

(两个没有继承关系的对象不可以进行向上转型或者向下转型

父类对象可以强制转换为子类对象,但有一个前提:这个父类对象先引用子类对象)

l Instanceof关键字

     在向下转型之前,要先判断父类对象是否为子类对象的实例。需要使用instanceof关键字判断,该关键字可以判断是否一个类实现了某个接口,还可以判断一个实例对象是否为一个类。


Myobject instanceof ExampleClass

其中,Myobject为某类对象的引用,ExampleClass为某个类。

使用instanceof关键字返回的值是布尔类型,即true和false。

(instanceof是Java中的关键字,Java语言中的关键字都为小写。)



l 方法重载

使用方法重载的原因:构造方法的名称由类名决定,所以构造方法只有一个名称。由于这些构造方法都需要根据类名进行命名,需要运用方法重载来让方法名相同而形参不同的构造方法同时存在。

方法重载就是在同一个类中允许存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。

(虽然在方法重载中可以使两个方法的返回类型不一样,但只有返回类型不一样不足以区分两个方法的重载,还需要通过参数的个数以及参数的类型来设置。)

编译器是利用方法名、方法各参数类型和参数的个数、参数的顺序来确实类中的方法是否唯一。方法的重载使得方法以统一的名称被管理,使程序代码更有条理。其中,定义不定长参数的方法可以确定两个方法是否具有重载关系。

【例】使用不定长参数重载假发运算方式。

public class OverLoadTest2 {

   public static int add(int a,int b) {

        return a+b;

   }

   public static double add(double a,double b) {

        return a+b;

   }

   public static int add(int a) {

        return a;

   }

   public static int add(double a,int b) {

        return b;

   }

   public static int add(int a,double b) {

        return a;

   }

   public static int add(int...a) {

        int s=0;

        for(int i=0;i<a.length;i++) {

             s+=a[i];

        }

        return s;

   }

   public static void main(String[] args) {

        System.out.println("调用add(int,int)方法:"+add(1,2));

        System.out.println("调用add(double,double)方法"+add(2.1,3.3));

        System.out.println("调用add(int)方法:"+add(5));

        System.out.println("调用add(int,double)方法:"+add(4,6.1));

        System.out.println("调用add(double,int)方法:"+add(3.3,7));



        System.out.println("调用不定长参数方法:"+add(1,2,3,4,5,6,7,8,9));

        System.out.println("调用不定长参数方法:"+add(1));


   }


}

结果为:

对象类型和方法的重载_子类

标签:对象,子类,int,add,类型,重载,方法
From: https://blog.51cto.com/u_15966010/7629554

相关文章

  • js中的类型转换
    js中的类型转换JavaScript中有两种类型转换:隐式类型转换(强制类型转换)和显式类型转换。类型转换是将一个数据类型的值转换为另一个数据类型的值的过程。隐式类型转换(强制类型转换):隐式类型转换是JavaScript自动进行的类型转换,通常发生在操作符运算或比较时,以确保操作的值具有相同......
  • TS中的类型断言
    @TOCTS的断言还是很有意思的,默认TS会给我们自动判断类型,我们也可以利用断言告诉TS(你别在那瞎推断了,按照我给你说的类型来)使用方法语法:1、值as类型2、<类型>值不推荐2,因为在tsx(Reactjsx语法的ts版)中\语法表示的是一个ReactNode//将一个any类型的变量str断言为string类型,获......
  • java数据类型拓展
    java数据拓展publicclassdemo3{publicstaticvoidmain(String[]args){//整数拓展:进制二进制0b十进制八进制0十六进制0xinti1=10;inti2=010;inti3=0x10;System.out.println(i1);Syste......
  • Java数据类型
    Java数据类型摘自狂神说java的PPT什么是字节1bit表示一位1Byte表示一个字节1024B=1KB1024KB=1M1024M=1G......
  • 后端传递Timestamp类型时间前端自定义接收格式
    Vue项目中处理后端返回日期字符串在这个Vue项目中,后端接口RentalQueryAllServlet返回的租车记录数据中,有一个rentalTime字段,其值是日期字符串,如:"Sep27,20239:23:40AM"。1.获取数据组件中使用axios调用接口获取数据: js methods:{fetchData(){axio......
  • js对象和变量怎么合并为一个新对象?
    对象和一个变量合并为一个新对象,下面是变量letobj={ name:'张三',cardId:'123456789012345678'}letcertNo='123456'两种方法:把合并后的属性放入一个新对象中//输出结果mergedData:{name:'张三',cardId:'123456789012345678',certNo:'123456&#......
  • SQL注入 --【过滤or(包含information、orderby这种也寄了)和and的类型】
    来自:[SWPU2019]Web1详见博客:https://blog.csdn.net/plant1234/article/details/124205120payload如下:查看行数1'/**/group/**/by/**/1,'1......直到1'/**/group/**/by/**/23,'1报错也就是说有22行找出回显点//找出回显点-1'/**/union/**/select/**/1,2,3,4,5,6,7......
  • MYSQL 连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对
    一:中文提示:连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:未将对象引用设置到对象的实例。DbType="MySql";ConfigId="".EnglishMessage:Connectionopenerror.未将对象引用设置到对象的实例。DbType="MySql";ConfigId="" 解决方法:在连接字......
  • js 检索数组对象中某个属性的值是否不相等
    //判断选中的项是否有不相同的模型consthasNameProperty=_this.selectedOrderList.filter(order=>order.hasOwnProperty("item_model_id"));if(hasNameProperty.length>0){constisEveryNameEqual=hasNameProperty.reduce((prev,curr)=>{if......
  • 【从0学习Solidity】7. 映射类型 mapping
    【从0学习Solidity】7.映射类型mapping博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于......