在.net中的里氏替换原则在javaEE中称为上溯造型;
定义:
父类引用指向子类对象
规则:
1.子类与父类符合 is - a 的关系
2.凡是子类可以出现的地方父类都可以出现
3.父类不可以强制转换成子类
4.父类对象有时候可以强制转换成子类对象 如:
Person p = new Student;
Student stu=(Student)p;
优点:
使用里氏替换原则可以增强程序的扩展性,减少方法重载的数量。
缺点:
丢失了子类所拥有的特有特性。
使用:
1.作为方法的返回类型
2.作为方法的参数类型
下面是代码:
public class Test{
public static void main(String[] args){
Person p = new Student();
p.setName("小燕");
//p.wrok();
Student stu= (Student)p;//将父类对象强制转换成子类对象
stu.wrok();
System.out.println("=====================");
Test t= new Test();
Person p1=t.getInstace("stu");
p1.setName("小花");
p1.wrok();
t.wrok(p);
}
public Person getInstace(String type){//作为方法返回类型
if(type.equals("stu")){
return new Student();
}
return new Teacher();
}
public void wrok(Person p){//作为方法参数类型
p.wrok();
}
}
class Person{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void wrok(){
System.out.println("人们要努力工作!");
}
}
class Student extends Person{
public void wrok(){
System.out.println(this.getName()+"要努力学习java");
}
}
class Teacher extends Person{
public void wrok(){
System.out.println(this.getName()+"是Java教师");
}
}
分享到:
相关推荐
上溯造型是指将子类对象转换为父类对象的过程,无需显式转换,因为子类天然继承了父类的所有属性和方法。在Java中,这允许我们使用父类引用处理子类对象,提高了代码的通用性。例如,`Instrument`是基类,`Wind`、`...
"基于上游线圈检测器信息的路段排队上溯识别方法"是一个专门针对交通流量监控和管理的技术,旨在提高道路通行效率,减少拥堵。该方法利用电信设备收集的数据进行分析,以识别路段上的车辆排队情况,并追溯其来源,...
第三,乳制品消费结构正转向低温市场,尤其是酸奶和巴氏奶,人均消费量与海外相比还有较大的增长空间;最后,农产品方面,冷链的核心需求在于果蔬肉渔等生鲜产品的流通,目前中国的流通率低于发达国家,但政府政策的...
类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.5 protected 6.6 递增开发 6.7...
第7章《多形性》深入讲解了Java的多态性,包括上溯造型的概念、方法绑定、扩展性和覆写。多态性是面向对象编程中的一个重要特性,它允许我们编写更加灵活和可维护的代码。 总之,《Thinking in Java》全面覆盖了...
上溯造型是指将子类对象转换成父类对象的过程。例如,在Person中定义的show方法是用来接收Person句柄的,但是在调用时可以传入Student对象的引用。这是因为Student对象也是Person对象。在show方法中,传入的句柄...
3. **对象造型**:在Java中,对象造型分为两种类型:上溯造型(向上转型)和下溯造型(向下转型)。上溯造型是自动进行的,例如,一个子类对象可以被视为父类对象,因为它继承了父类的所有属性和方法。而下溯造型...
1. **类型转换**:当一个对象引用被上溯造型(upcasting)为它的超类引用时,虽然失去了具体的类型信息,但可以通过强制类型转换(casting)回原始类型来恢复这些信息。例如,从`Object`类型转换为`Shape`类型,Java...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.5 再论枚举器 ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...
7.8.2 下溯造型与运行期类型标识 7.9 总结 7.10 练习 第8章 对象的容纳 8.1 数组 8.1.1 数组和第一类对象 8.1.2 数组的返回 8.2 集合 8.2.1 缺点:类型未知 8.3 枚举器(反复器) 8.4 集合的类型 8.4.1 Vector ...