类对象的 显示转换 和 隐式转换
public class Employee {
int a = 1 ;
public void work(){} ;
public void getPay(){} ;
}
public class Teacher extends Employee{
int a = 1000 ;
@Override
public void getPay() {
System.out.println("发工资了!!") ;
}
@Override
public void work() {
System.out.println("又要上班了!!") ;
}
public void driveCar(){
System.out.println("开车旅游去了!!") ;
}
}
一、隐式转换(子类 --> 父类)
Employee emp = new Teacher() ;
System.out.println(emp instanceof Employee) ;//true
System.out.println(emp instanceof Teacher) ; //true
注意此处,虽然emp也是Teacher的实例对象,但emp只能调用Employee类里面有的属性和方法,不能调用Teacher类自己新定义的属性或方法。
二、显示转换(强制转换)(父类 --> 子类)
Employee emp = new Teacher() ;
Teacher empTotea = (Teacher)emp ; //父类 --> 子类
System.out.println(empTotea instanceof Employee) ;//true
System.out.println(empTotea instanceof Teacher) ; //true
Employee e = new Employee() ;
Teacher t2 = (Teacher)e ; //父类 --> 子类
编译可以通过,但运行时会报错:ClassCastException
Exception in thread "main" java.lang.ClassCastException: com.org.momo.instanseof.Employee cannot be cast to com.org.momo.instanseof.Teacher
at com.org.momo.instanseof.Test.main(Test.java:7)
分享到:
相关推荐
在`main`函数中,`Date`对象`now`被隐式转换为`int`类型,并存储在变量`since`中,随后输出。 除了上述两种类型转换,还可以定义类之间的转换函数,允许不同自定义类的对象互相转换。例如,可以创建一个`CustomDate...
突出显示隐式转换的对象。 重要说明:在研究丰富的对象时,您必须仅突出显示对象,而不是突出显示的方法。 这是因为对象就是要转换的对象。 选择该方法将解析该方法返回的对象的隐式转换。 CTRL + Q 查看实际的...
这使得JavaScript在处理不同类型的数据时,会有强制类型转换和隐式类型转换的行为。这两种转换在编程过程中非常常见,但如果不理解其工作原理,可能会导致难以预料的结果。 ### 强制类型转换 强制类型转换主要包括...
在C#中,类型转换有两种主要方式:隐式转换和显式转换。 - **隐式转换**:当从位数较少的数据类型转换到位数较多的数据类型时,C#会自动进行转换,无需程序员干预。例如,从`int`到`long`的转换。 - **显式转换**:...
在Java中,有两种类型的转换:自动类型转换(隐式转换)和强制类型转换(显式转换)。本示例将主要讨论强制类型转换。 1. 强制类型转换的概念: 当我们需要将一个数据类型较大的变量赋值给数据类型较小的变量时,...
3. 隐式转换法:当类对象需要被当作其他类型处理时,会隐式调用拷贝构造函数。 示例中,`Person`类定义了三种构造函数:默认构造、有参构造和拷贝构造。在`test()`函数中,通过括号法展示了这三种构造函数的调用。...
5. 高级特性:除了基本的隐式对象,JSP还有EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library),它们提供了更简洁的表达式语法和标签库,进一步简化了JSP的编写。 6. 学习资源与实践: - ...
它们分别用于静态转换、运行时多态性转换、底层位模式转换和改变对象的const、volatile属性。 itoa函数是C库中的一个非标准函数,用于将整数转换为字符串。它不是C++标准的一部分,但在许多实现中仍然可用。format...
System.Drawing命名空间提供了Image类,可以用来加载、显示、保存和操作图像。例如,使用Image.FromFile()方法加载图片,然后使用Save()方法保存到PDF。 5. **PDF文档创建**:使用PDFSharp,首先需要创建一个...
转成数字对象:强类型、显示转换:强制转换成数字类型。Number() 隐式型、弱类型转换:+ - * / (运算符) undefined 转数字:NaN null 转成数字:0 true 转数字:1 false 转成数字:0 数字除以0结果是infinity...
例如,在上面的示例代码中,我们定义了一个MyInt类,其中有一个隐式类型转换 operator bool(),当我们将两个MyInt对象相加时,结果对象myInt1被隐式地转换为bool类型,导致输出数值为1,而不是我们期望的数值3。...
例如,给String原型添加一个方法fn,该方法返回this引用,调用a.fn()的结果是返回字符串"hello",但在alert中调用时,会先将结果隐式转换成字符串"hello"再显示。 隐式类型转换是JavaScript语言灵活性的一个体现,...
Java中的数据转换包括隐式转换和显示转换。隐式转换是自动类型提升,显示转换是强制转换。数据转换的两条规则是:取值范围小的类型先提升为大的类型,然后在运算;byte、short、char三个类型运算时先提升为int类型。...
在描述中提到,派生类指针可以隐式转换为基类指针,这是因为派生类包含了基类的所有特性。相反,基类指针到派生类指针的转换则需要显示地进行,这通常通过`static_cast`等C++转换关键字完成。在多重继承的情况下,...
然而,基类对象不能被隐式转换为派生类对象,因为这可能会导致对象状态的丢失。 2. **显示类型转换(Explicit Conversion)**:这种转换是程序员通过显式类型转换运算符(如 `(Type)` 或 `static_cast<Type>`)明确...
* 显示转换和隐式转换的区别?显示转换是类型强转,把一个大类型的数据强制赋值给小类型的数据;隐式转换是大范围的变量能够接受小范围的数据。 类型转换 * Char 类型能不能转成 int 类型?能,Char 类型可以隐式...
此外,在 Gbase 8s 数据库管理系统中,还有其他一些重要的数据类型概念,例如数据类型的隐式转换和显示转换。隐式转换是指数据库系统自动将一种数据类型转换为另一种数据类型的过程,而显示转换是指用户通过 CAST 或...
2. 概念引入 类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下: 任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成; 任何类型转换为其派生类型时,必须进行显示转换,转换的规则是...
这可以通过在分数类中添加一个构造函数,接受一个整数并将其作为分子,分母设为1,或者通过重载操作符使整数可以隐式转换为分数对象来实现。 在`fraction`文件中,可能包含了这个分数类的实现细节,包括类定义、...
JavaScript中的类型转换是编程过程中非常重要的一个概念,它涉及到数据类型的自动转换和显式转换。...此外,显示类型转换通常是更安全的选择,因为它允许你控制数据转换的过程,避免了隐式转换可能导致的错误。