案例1:
package com.curtis;
public class Pol {
public static void main(String[] args) {
B b = new B();
A a = b;// A 的实例化对象,指向B的实例
a.tell01();// new 的是B 类,调用方法时,调用的是B 类中的tell01() 方法
a.tell02();// B 类中没有tell02() 方法,但是B 类继承了A 类,所以该处调用的是A 类中的tell02() 方法
// A 类中是没有tell03() 方法的,所以A 类实例在调用B 类中的方法时是无法调用tell03() 方法的
// 输出结果:
// B-->tell01 方法
// A-->tell02 方法
}
}
class A {
public void tell01() {
System.out.println("A-->tell01 方法");
}
public void tell02() {
System.out.println("A-->tell02 方法");
}
}
class B extends A {
/**
* 父类A 中也有此方法,现在B 类中这样定义,实际是对父类中tell01() 方法进行覆写
*/
public void tell01() {
System.out.println("B-->tell01 方法");
}
public void tell03() {
System.out.println("B-->tell03 方法");
}
}
案例2:
package com.curtis;
public class Pol {
public static void main(String[] args) {
A a=new B();
B b=(B) a;// 向下转型
b.tell01();
b.tell02();
b.tell03();// new 的是B 类,B 类中是有tell03() 方法的;
// 输出结果:
// B-->tell01 方法
// A-->tell02 方法
// B-->tell03 方法
}
}
class A {
public void tell01() {
System.out.println("A-->tell01 方法");
}
public void tell02() {
System.out.println("A-->tell02 方法");
}
}
class B extends A {
public void tell01() {
System.out.println("B-->tell01 方法");
}
public void tell03() {
System.out.println("B-->tell03 方法");
}
}
打开App,阅读手记
热门评论
继承
被继承的类功能不够强大,新类在继承某一个类后整一堆自己的方法;表现形式来看是:新类既有被继承类的方法,又有自己的一堆东西,看上去比被继承类强大了;
覆写
覆写跟重载一定要分开,分不开先记住前提:覆写一定是在有继承关系的类中才会冒出来的;新类继承了某一个类,新类中的方法定义跟被继承类一模一样,就说明新类中的方法把被继承类中的方法盖死了;
重载局限在方法上面:什么:方法名称相同,方法的参数列表不相同;说明:返回值没有要求,返回值没有要求,返回值没有要求;