java oop详解
近日来重温了一下java oop的知识。加深了对面向对象的理解。尤其时继承方面。故写一篇博客。记录一下自己的想法和心得
1.面向对象主要分为三大点(封装,继承,多态)
封装的思想促进了类的形成。相比于之前面向过程的编程。所有的方法和属性都堆积在一个main方法中,代码无法重复利用。重复率高。代码的可读性也非常的差。因此。封装呼之欲出。将共有的成员变量和行为封装成类。方便代码的复用和隐藏。
继承:将多个类的共有属性和方法封装成一个父类。而继承该父类的子类将拥有父类拥有的属性和方法。减少代码的重复率。
(1.成员变量:(结论1)父类的成员变量会被子类继承,且子类对象中该成员变量和子类中的父类对象的该成员变量指向一个内存地址。也就是说,改变一个,另一个也会被改变。
(结论2)子类还可以重新定义相同名字的成员变量,此时,父类中的成员变量将对于子类被隐藏。改变子类的成员变量时,就是改变子类新定义的成员变量。而子类对象中的父类对象的成员变量并没有改变。此时想要在子类中调用父类的隐藏成员变量,只能通过super或者父类的引用来调用。
下面是不同修饰符修饰父类成员变量时继承的详解
(1.1由(public、default、protected、private)修饰的成员变量。子类都可以继承。但是在子类中是否能够访问就取决于父类成员变量的修饰符了。且他们都满足上面论述的两段话。也就是说,当子类继承了父类的成员变量后,子类和父类的成员变量指向的是同个地址,当一个改变。。。。重复上面的话。当子类无法访问到父类的成员变量的时候,子类会去定义新的成员变量,父类的同名成员变量就被隐藏了。
(1.2由static修饰的成员变量。子类都可以继承。此时,继承过来的也是static变量。也就是说,父类和子类共享同一内存的静态变量。一个改变另一个也跟着改变。(注意比价static变量和普通变量的区别,我加黑的两段话。一个针对于类,一个针对于对象)。同时,子类还可以定义新的同名成员变量(无论是否为静态),此时父类中的静态变量都会针对于子类被隐藏。
(1.3由final修饰的成员变量,子类都可以继承.此时继承而来的是final类型的变量,子类无法去更改他。且满足结论一。且此时子类可以重新定义同名(不要求类型)的变量,此时父类中的成员变量也会相对于子类被隐藏。
(2.方法:父类的方法是否能被子类继承。继承之后能否被重写,能否体现出多态。就要关注父类中该方法的修饰词。(排除一个,父类的构造方法无法被子类继承)
(2.1 由public default protected private 定义的方法,子类都能够继承。只是,子类能不能访问到或者说调用到这个方法就要看父类方法前的控制符了。只要子类能够访问到该方法,子类就能重写该方法。此时,多态可以体现
(2.2由static修饰的方法,子类都可以继承,且可以通过父类或者子类的类名以及对象去访问。但是,该方法无法被子类重写。如果子类想定义同名的方法,除非时static方法,要不然编译器会报错。显示不能重写。而子类定义同方法签名的static方法时,编译器会认为这是子类新定义的方法。父类中的方法将会针对于子类被隐藏。此时,父类引用指向子类对象的多态行为消失。改变成根据引用来调用方法。
针对于static方法的无法重写性,我们可以在抽象类中定义static非抽象方法,此时,表明子类的实现过程都一致,都是被父类提前编写好了,子类无法重写,断绝子类手滑重写不该重写的方法的可能性。
(2.3由final修饰的方法,子类都可以继承,但是别说重写了,就连隐藏,都无法隐藏。因此,此时的子类只能老老实实的用父类的方法。要么,对其进行方法重载,说白了是定义一个不一样的方法。多态行为消失
(2.4由abstract修饰的方法,子类必须继承然后重写。多态行为体现
3.多态:多态总结起来就是一句话,父类的引用指向子类对象。此时调用的方法是子类重写过的方法。多态的具体体现有:继承(抽象类也是继承的一种体现),接口
java oop详解的更多相关文章
- Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- 黑马----JAVA迭代器详解
JAVA迭代器详解 1.Interable.Iterator和ListIterator 1)迭代器生成接口Interable,用于生成一个具体迭代器 public interface Iterable ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- Java虚拟机详解----JVM常见问题总结
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- [转] Java内部类详解
作者:海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置 ...
- Java面向对象详解
Java面向对象详解 前言:接触项目开发也有很长一段时间了,最近开始萌发出想回过头来写写以前学 过的基础知识的想法.一是原来刚开始学习接触编程,一个人跌跌撞撞摸索着往前走,初学的时候很多东西理解的也懵 ...
- java 乱码详解_jsp中pageEncoding、charset=UTF -8"、request.setCharacterEncoding("UTF-8")
http://blog.csdn.net/qinysong/article/details/1179480 java 乱码详解__jsp中pageEncoding.charset=UTF -8&quo ...
- java 泛型详解(普通泛型、 通配符、 泛型接口)
java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...
- Java synchronized 详解
Java synchronized 详解 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 1.当两个并发线程访问同一个对象object ...
随机推荐
- IDEA Maven 三层架构 1、基本的Archetype 搭建
JDK:1.8 Maven:3.3.9 三层架构:基于 SpringMVC 的 UI 层.业务逻辑层以及数据访问层 从对 Maven 的了解可以看出,三层架构的创建在于对文件夹的合理安排,他们通常是主 ...
- Spring装配Bean之组件扫描和自动装配
Spring从两个角度来实现自动化装配: 组件扫描:Spring会自动发现应用上下文中所创建的bean. 自动装配:Spring自动满足bean之间的依赖. 案例:音响系统的组件.首先为CD创建Com ...
- eclipse环境下,java操作MySQL的简单演示
首先先通过power shell 进入MySQL 查看现在数据库的状态(博主是win10系统) 右键开始,选择Windows powershell ,输入MySQL -u用户名 -p密码 选择数据库( ...
- Django之环境搭建以及初始配置
Django采用MVC架构,百度百科介绍如下: 全名Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业 ...
- ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd
最近火的不能再火的日志框架就是ELK,其中E(Elasticsearch)表示日志存储,L(Logstash)表示日志收集,K(kibana)表示日志的UI界面,用来查询和分析,而其中的L可以使用Fl ...
- UVW源码漫谈(四)
十一假期后就有点懒散,好长时间都没想起来写东西了.另外最近在打LOL的S赛.接触LOL时间不长,虽然平时玩的比较少,水平也相当菜,但是像这种大型的赛事有时间还是不会错过的.主要能够感受到选手们对竞技的 ...
- java 调用webservice接口
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...
- 域名系统DNS
一.域名系统是什么 域名系统其实就是一个把主机名解析为IP地址的名字系统. 因特网使用层次树状结构的命名方法,并使用分布式的域名系统DNS.因特网的域名系统DNS被设计成一个联机分布式数据库系统,并采 ...
- TensorFlow Object Detection API(Windows下训练)
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 最近事情比较多,前面坑挖的有点久,今天终于有时间总结一下,顺便把Windows下训练跑通.Li ...
- du和df显示磁盘空间使用差异大的几种情况
接触客户多了,发现经常有客户遇到du看到系统只使用了一部分磁盘空间,但df看时磁盘空间已经满了,或者差异较大,我遇到过三次不一样的原因,下面做一下总结,恶补一下!也希望对大家有点帮助! 现象:有客户 ...