对象类型和方法的重载
今日份学习对象类型的转换,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