回顾
六、多态的实现
1.多态的基本概念
2.方法多态性
3.对象多态性
学习小结
3.对象多态性
实现向下转型
package com.Javastudy2;
/**
* @author Y.W.
* @date 2017年9月7日 下午11:14:42
* @Description TODO 实现向下转型
*/
public class P316_12_22 {
public static void main(String[] args) {
A1 a = new B1(); // 实例化子类对象
a.print(); // 调用子类B的print()
B1 b = (B1) a; // 向下转型,强制转换
b.getB(); // 子类对象b可找到getB()
}
}
class A1 {
public void print() {
System.out.println("******--父类A:public void print(){}");
}
}
class B1 extends A1 {
public void print() { // 方法覆写
System.out.println("######--子类B:public void print(){}");
}
public void getB() { // 此方法为子类扩充的功能
System.out.println("%%%%%%--子类B:public void getB(){},B类扩充方法。");
}
}
运行结果:
4.隐藏
利用被关键词static修饰的静态方法是不能被覆写的,来隐藏(Hide)。
package com.Javastudy2;
/**
* @author YangWang
* @date 2017年9月7日 下午11:26:28
* @Description TODO 隐藏子类成员
*/
public class P317_12_23 {
public static void main(String[] args) {
Father dad = new Son();
dad.overWriting();
Father.overWriting();
Son.overWritting();
}
}
class Father {
public static void overWriting() {
System.out.println("######--Father method");
}
}
class Son extends Father {
public static void overWritting() {
System.out.println("******--Son method");
}
}
警告:
运行结果:
隐藏概念只做了解就好,应用不广泛。
七、点拨
1.方法重载(Overload)和覆写(Override)区别
2.this和super的区别
由于两者都可以调用构造方法,所以this()和super()语法只能二选一。
3.final关键字的使用
终结器。
可以修饰三类情况:修饰类、修饰方法及修饰变量。
①使用final修饰的类不能有子类(俗称太监类)
②使用final定义的方法不能被子类覆写
③使用final定义的变量就成了常量
思考
今天先这样吧。习题1的代码已经差不多了,明天补一下习题的,这章就ok了。
一天的学习有效时间也许只有3小时,而我也许就用这3小时学习了Java。
希望这不是自我安慰,买了刘媛媛的课,希望可以改善我的学习方法。