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)在运行程序的 ...
随机推荐
- Flask学习之旅--分页功能:分别使用 flask--pagination 和分页插件 layPage
一.前言 现在开发一个网站,分页是一个很常见的功能了,尤其是当数据达到一定量的时候,如果都显示在页面上,会造成页面过长而影响用户体验,除此之外,还可能出现加载过慢等问题.因此,分页就很有必要了. 分页 ...
- stl源码为什么要大量使用typedef?
SGI源码download,<stl源码剖析>里展示了vector的部分源码: template <class T, class Alloc = alloc> class ve ...
- [python面试题] 什么是单例,单例有什么用,业务场景是什么
单例概念: 单例是一个特殊的类,这个类只能创建一次实例,例子如下: 1.a = Std(name='leo'), b = Std(name='jack'),两者的指向都是name=‘leo’的对象: ...
- mongo数据库基本查询语句
D:\MongoDB\Server\3.4\bin>mongo MongoDB shell version v3.-g83c3022fe4 connecting to: mongodb://12 ...
- Python快速设置Excel表格边框
import xlwings as xw #打开存好的excel app = xw.App() #设置应用 wb = xw.Book("E:/Data/小蜜蜂超市销售报表.xlsx" ...
- git 查看文件修改
查看某个文件的修改历史: 用git log -p filename. git blame filename是查看目前的每一行是哪个提交最后改动的. 查看某次提交修改列表: git show 版本号 ...
- 安卓SDK的配置流程以及安装build-tools等插件
这两天做了一个移动端混合开发的项目,需要配置安卓的SDK,不过在这之前,需要先配置好Java环境(这个在这里就不写了).下面开始配置步骤: 1.下载SDK,然后解压到某个目录下面.推荐两个下载网址: ...
- ThinkPhp学习
页面跳转 界面跳转是很常用的操作,所以基于ubuntu16系统,这周学习了ThinkPHP页面跳转和重定向. 页面跳转 系统的Think\Controller类内置了两个页面跳转方法err ...
- systemctl 相关命令
systemctl 相关命令:service,chkconfig systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本.systemd 的特性有:支持并行化 ...
- JAVA中的SimpleDateFormat yyyy和YYYY的区别
最近有一个功能是对输入的日期格式化,设计给出的范例是 YYYY-MM-dd HH:mm:ss,于是我简单验证了一下是可以的,然后就这么在手册里写了.然后偶然发现有地方也用yyyy啊,这个到底有神马区别 ...