Java基础(五)OOP面向对象之(三) 面向对象思想总结
2017-03-26 19:21
393 查看
Java基础(五)OOP面向对象之(三) 面向对象思想总结
封装继承
多态
1. 继承总结
继承现象大总结:子类重写父类方法,调用子类方法;
子类属性与父类同名(不管子类属性前修饰符如何均允许),如获取属性,看获取属性方法位置,如在父类中,获取的是父类属性,如在子类中,获取的是子类属性;(就近原则)
子类私有方法与父类私有方法同名,如调用该方法,看私有方法被调用的位置,如在父类中,调用的是父类方法,如在子类中,调用的是子类方法;(就近原则)
子类静态方法与父类静态方法同名,子类静态方法屏蔽父类静态方法。如调用该静态方法,看实例化对象时所声明的类型,如声明为父类,调用的是父类中静态方法,反之是子类中静态方法。
子类中的成员变量不会被覆盖,无多态特性,需要注意!
2. 封装总结 关键字和权限关系总结
和C++不同的是,Java内的继承通常采取,单继承多实现的方式。并且,继承通常采用的是public类型的继承。所以,其中的权限关系主要如下所示。
访问级别 | 访问控制修饰符 | 同类 | 同包 | 子类 | 不同的包 |
---|---|---|---|---|---|
公开 | public | y | y | y | y |
受保护 | protected | y | y | y | |
默认 | default | y | y | ||
私有 | private | y |
3. 多态总结
调用子类的方法package com.us.demo.extend; class TransferBase{ public void method(){ System.out.println("Base"); } } class TransExtend extends TransferBase{ public void superMethod(){ super.method(); } public void method(){ System.out.println("Trans"); } } public class TransferExtendTest { public static void main(String []args){ TransferBase trans = new TransExtend(); trans.method();//调用的事故子类中的method方法
如何调用父类被覆盖掉方法
第一种: 子类 重现的方法中 使用 super关键字 去调用父类中的方法或属性;
第二种:直接实例化 父类。
package com.us.demo.extend; class TransferBase{ public void method(){ System.out.println("Base"); } } class TransExtend extends TransferBase{ public void superMethod(){ super.method(); } public void method(){ System.out.println("Trans"); } } public class TransferExtendTest { public static void main(String []args){ TransferBase trans = new TransExtend(); trans.method(); ((TransferBase)trans).method();//没用 只有让指针重新指向父类的空间 ((TransExtend)trans).superMethod();// 可以 但是违背了多态的思想 有点鸡肋 // 如果不是类内部,而是外部调用,比如你例子中的main方法,答案是 // // 不能。你不能调用已经被覆盖掉的父类的方法。 // // 这也是覆盖override的最初设计意图之一。 // // 大多数时候,覆盖父类意味着子类想做些特殊的处理。如果能够跳过子类的特殊处理,就会打开一个无法控制的缺口,会导致很多很多问题。 // // 唯一可以调用父类方法的地方,就只有类内部。子类自己控制,什么时候该调用父类,什么时候做自己的处理。 } }
相关文章推荐
- Java基础(五)OOP面向对象之(二) 面向对象思想综述
- Java基础(五)OOP面向对象之(三) 面向对象思想概述(续)
- Java基础(五)OOP面向对象之(一) 面向对象思想初识
- 6 Java基础语法(二维数组,参数传递与数据加密问题)&面向对象(面向对象思想,类与对象及使用,对象内存图解)
- 黑马程序员学习log第七篇基础知识:JAVA的面向对象之GUI总结
- 黑马程序员学习log第四篇基础知识:JAVA的面向对象之多线程总结
- 黑马程序员_java面向对象思想学习总结
- 黑马程序员_java基础知识总结(1)面向对象基础总结
- 黑马程序员——java基础面向对象基础知识总结
- Java基础学习中,关于面向对象中多态、抽象类、接口的总结
- 黑马程序员 Java学习总结之面向对象和Java基础
- Java基础之面向对象思想的重要性
- 面向对象总结(1)--------面向对象的基础
- 重踏学习Java路上_Day06(java 基础下与面向对象,二维数组与面向对象基础)
- Java基础_面向对象思想
- 理解Java面向对象的程序设计思想-Java基础-Java-编程开发
- 黑马程序员学习log第九篇基础知识:JAVA的面向对象之正则表达式及反射总结
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 黑马程序员_Java基础_03面向对象思想(对象转型注意事项、多态、抽象类、final关键字等)