Java核心基础知识(一):概念、语法、使用、源码
1. Java中OOP的特点?
OOP(Object Oriented Programming):面向对象编程。具有封装、继承、多态三大特征。
封装:解决数据安全性问题;
继承:解决代码的重用性问题;
多态:解决程序扩展问题。
1.1 封装
封装:隐藏对象的属性和实现细节,仅对外提供可调用、稳定的公共访问方式。
封装优点:
1. 类具有独立性和隔离性,保证类的高内聚;
2. 避免使用非法数据赋值,降低出错可能性,便于维护;
3. 避免类内部实现发生改变时,导致整个程序的改变。
封装实现:对象的属性声明为private(私有),并提供合理public(公有)的get/set方法以供外部使用。
权限区域:
修饰符 同一类中 同一包中 子类 全局范围
public √ √ √ √
protected √ √ √
default(默认) √ √
private √
1.2 继承
在Java中,类的继承通过extends关键字实现,接口得继承通过implements是实现。继承以类继承讲述,在没有特殊标记下,下面将的继承均是类继承。
继承描述:从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新能力
继承优点:代码变的简洁;增加代码的可重用性、扩展性。
继承特点:传递性,单根性,使用super条用父类成员,默认先调父类的无参构造函数。
继承是IS-A关系,没有继承类是,则本类直接继承Object类。
继承条件下的构造函数调用:调用构造器时只能在构造器第一行调用。
1. 子类构造器没有super关键字,默认调用父类的午餐构造器;
2. 子类构造器有super关键字,则调用父类相关的构造器;
3. 子类构造器有this关键字,调用本类的构造器,禁用上面的两条规则。
1.3 多态
多态的三个条件:
1. 继承的存在,继承是多态的基础,没有继承就没有多态
2. 子类重写父类的方法
3. 父类引用变量执行子类对象(向上转型,里式替换原则,子类到父类的类型装换)
面向对象的多态性主要体现在重写和重载两个方面。
重载:同名方法,不同参数(个数、类型、位置),与返回值无关,适用所有的(构造,静态,实例)方法。
重写:子类继承父类的方法,如果想在原来基础修改方法,需要采取方法重写。方法重写称为覆盖。
多态实现:同一类的不同子类对象对同一个方法调用产生的不同结果叫多态。
多态优点:不用修改程序代码就可以改变程序动态运行时绑定的具体代码;
增强了软件的灵活性和扩展性。
父类中定义的方法,子类重写方法,父类类型会调用子类的方法,否则调用父类定义的方法。
3. 接口与实现类的区别
语法层面:
1. 抽象类可以提供成员方法的实现细节,接口方法只能是public abstract方法
2.抽象类可以是各种类型,接口中成员变量只能是public static final;
3. 抽象类可以有静态代码块和静态方法,有接口中不能含有静态代码块以及静态方法
4. 一个类只能继承一个抽象类,一个类可以实现多个接口
设计层面层面:
5. 抽象类是对事物的抽象是对类的抽象,接口是对行为的抽象
6. 抽象类是对类整体进行抽象包括属性、行为,接口是对类局部(行为)进行抽象
7. 抽象类是模板式设计,而行为是一种辐射设计(必须实现方法)
Java核心基础知识(一):概念、语法、使用、源码的更多相关文章
- 吾日三省吾身 java核心代码 高并发集群 spring源码&思想
阿里面试题 未解决https://my.oschina.net/wuweixiang/blog/1863322 java基础 有答案 https://www.cnblogs.com/xdp- ...
- JAVA相关基础知识
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- java必备基础知识(一)
学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...
- 什么才是java的基础知识?
近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...
- Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- java部分基础知识整理----百度脑图版
近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...
- Java数据结构基础知识你知道多少?
http://www.cnblogs.com/qlky/p/7359462.html http://www.importnew.com/28263.html HashMap( java 7) 构造函数 ...
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...
- java学习笔记(3)数据类型、源码、反码、补码、精度损失、基本数据类型互相转换
关于java中的数据类型: 1.数据类型的作用是什么? 程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用的空间大小不同. 数据类型的作用是指导java虚拟机(JVM)在运行程序的 ...
随机推荐
- C# Self Injector into non managed process
Hey all, I'm gonna explain you how make a self injecting program in C#.I hope you guys thinks its us ...
- 开源 NAS 操作系统不完全汇总
市面上能见到的 NAS 操作系统很多,有如 FreeNAS 这样意气风发的开源免费版,也有完全商业的闭源版本,更有如黑群晖之类的破解版本.NAS 系统的迭代是一个大浪淘沙的过程,活下来的系统在功能上逐 ...
- javascript获取网页宽高,屏幕宽高,屏幕分辨率等
<script> var s = ""; s += "\r\n网页可见区域宽:"+ document.body.clientWidth; s + ...
- Linux操作系统(三)_部署JDK
一.通过tar.gz压缩包安装 1.在usr目录下创建java目录 cd usr mkdir java 2.用rz命令上传tar.gz安装包到java目录 3.解压tar.gz安装包到当前目录 tar ...
- Cocos2d-x之Action
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 在Cocos2d-x中的Node对象可以有动作,特效和动画等动态特性.因此在Node类中定义了这些动态特性,因此精灵,标签,菜单,地图和粒 ...
- Oralce分页
SELECT *FROM ( SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( SELECT A . ID AS "id", A .bill_noti ...
- ThreadLocal相关
转自:http://blog.csdn.net/lufeng20/article/details/24314381 ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.T ...
- 区间节点的lca
题目hdu5266 分析:多节点的LCA就是dfs序中最大最小两个节点的LCA.所以只要每次维持给出节点的dfs序的最大最小,然后就是两点的LCA 代码: rmq的st+lca的倍增 #include ...
- 从零开始做一个Jmeter性能测试
安装Jmeter 1.下载地址http://jmeter.apache.org/download_jmeter.cgi 2.解压下载文件,然后将bin目录添加到系统环境变量PATH里. 3.确保已安装 ...
- 2018-11-3-如何使用-Telegram
title author date CreateTime categories 如何使用 Telegram lindexi 2018-11-03 10:12:12 +0800 2018-02-21 1 ...