// 自定义成员方法实现既能打印矩形对象又能打印圆形对象的特征,对象由参数传入 子类 is a 父类 // Shape s = new Rect(1, 2, 3, 4); 父类类型的引用指向子类类型的对象,形成了多态 // Shape s = new Circle(5, 6, 7); 多态 // 多态的使用场合一:通过参数传递形成了多态 public static void dr...
在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问方式有两种 直接通过子类对象访问成员变量等号左边是谁,就优先用谁,没有则向上找 间接通过成员方法访问成员变量 继承中成员方法访问的特点 在父子的继承关系中,创建子类对象,访问成员方法的规则: 创建的对象是谁,就优先用谁,如果没有则继续向上找 注意...
所以你的代码肯定是针对父类或者接口类型写的,具体实现就交给子类去思考,实现关注点的分离,逻辑的复用...
七、继承 在构成继承关系的两个类中,一个被称为父类或基类,另一个被称为子类。如下图: 【重点理解】:1)子类包含弗雷德所有属性和方法; 2)所有的子类都可以直接转换成父类类型; 3)当父类类型变量里面存的是某个子类的对象的时候,才能转换成那个子类类型。 举例说明: 【例1】:1)创建一个Ren类的对象,其字...
Student bobo = new Student(“Bobo”); Object stu = bobo; Stu的类型为什么就变成Student了? 传值过程我们将一个学生类对象传给了Object类对象,我们称stu是一个上转型对象,那为什么上转型对象的类类型.getClass()是子类类型 尝试过的解决方式:调用栈显示是子类类型 也就是学生类...
1.父类与子类的上下类型转换,两个类之间,必须通过extends关键字,有继承关系 2.向下转型时,父类不能直接通过 new 实例化 赋值给子类的引用变量,必须进行子类 的强制转换。举个例子,向上转型,我们可以把“鸭脖”上升到“食物”这一层次;向下转型, 我们不能直接将“食物”下降到“鸭脖”这一层次,因为食物是广泛的...
父类引用指向子类对象:Parent p = new Child(); --- 参考继承中的示例 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。 多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。 === 1 2...
1.从对象的内存角度来理解.假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,里面的变量需要占用0.5M内存.现在通过代码来看看内存的分配情况:2.f = new Father();//系统将分配1M内存.Son s = new Son();//系统将分配1.5M内存!因为子类中有一个隐藏的引用super会指向...
Integer i = new Integer(10); 手动转换 Integer i = 10; 自动转换 这里面就涉及到了装箱 10是int类型 Integer是引用类型 相当于父类指向子类 拆箱: Integer i = 10; //装箱 int n = i; //拆箱 将对象重新转换成基本类型 内部:装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器...
private修饰的类型可用范围最小,即除了本类,其他类都不能使用或被子类继承,final修饰变量为常量,修饰类则类不能被继承,修饰方法则不能被子类重写