继承与多态
来源:互联网 发布:六壬排盘软件 编辑:程序博客网 时间:2024/05/20 16:34
1.组合
组合:在一个新类中使用另一个类的对象:
public class test {public static void main(String[] args) {testFather tf = new testFather();tf.run();}} class testFather { void run() {}}
2.向上转型
形式:A a = new B(),B为A的子类;
因为对象既可以作为本身的类型引用,也可以作为它基类的类型引用,因此把对某个子类的对象(B)的引用视为对基类(A)的引用(父类A的引用a指向子类B的对象)称为向上转型
向上转型可以看成多态的一种体现,即允许一种类型有不同的实现(可以理解为事物存在的多种体现形态)。
public class test {public static void run(Animal a) {a.run();}public static void main(String[] args) {Tiger tiger = new Tiger();run(tiger);//println:老虎奔跑.........}} class Animal { void run() { }} class Tiger extends Animal { @Overridevoid run() { System.out.println("老虎奔跑.........");}}在这段代码中,Tiger的引用tiger通过run方法向上转型变成了Anmial的引用,在这里,为什么静态方法run中不直接使用(Tiger t)?
这是由于如果有多个子类,那么必须给每个子类编写run方法,这会增加代码的数量。
public class test {public static void run(Tiger t) {t.run();}public static void run(Insect i) {i.run();}public static void main(String[] args) {Tiger tiger = new Tiger();Insect insect = new Insect();run(insect);//println:昆虫飞翔.........run(tiger);//println:老虎奔跑.........}} class Animal { void run() { }} class Tiger extends Animal { @Overridevoid run() { System.out.println("老虎奔跑.........");}}class Insect extends Animal {@Overridevoid run() {System.out.println("昆虫飞翔.........");}}如果使用了向上转型:
public class test {public static void run(Animal a) {a.run();}public static void main(String[] args) {Tiger tiger = new Tiger();Insect insect = new Insect();run(insect);//println:昆虫飞翔.........run(tiger);//println:老虎奔跑.........}}这样可以减少代码量。
阅读全文
1 0
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 继承与多态
- 多态与继承
- 继承与多态
- [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique
- javax.net.ssl.SSLException: Read error: ssl=0xdeae5100: I/O error during system call, Connection res
- 说说网站限时秒杀系统的架构设计
- CGLIB动态代理
- 关于Qt 静态成员函数调用信号
- 继承与多态
- 2017.11.03
- 《数字图像处理的MATLAB实现》读书报告
- 使用Java程序输出1~100之间 7的倍数的个数及总和,并打印输出
- HashMap底层实现原理
- PHP Notice: Undefined variable: _SESSION
- 自定义控件---save和saveLayler中参数的意义
- python爬虫爬取糗百成人图片多线程版本
- leetcode 338. Counting Bits