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)在运行程序的 ...
随机推荐
- 建站手册-网站构建:万维网联盟(World Wide Web Consortium)
ylbtech-建站手册-网站构建:万维网联盟(World Wide Web Consortium) 1.返回顶部 1. http://www.w3school.com.cn/site/site_w3 ...
- mybatis分页插件使用
一:导入依赖 <!--分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> < ...
- 【读书笔记】:MIT线性代数(3):Special Solution, Rank and RREF
Special Solutions: Notice what is special about s 1 and S2. They have ones and zeros in the last two ...
- 用select实际非阻塞I/O
非阻塞read/write 函数返回0表示可读或可写, -1表示select失败或超时 select返回0表示超时,-1表示读取失败,1表示可读或可写 int read_timeout(int fd, ...
- 深度学习大规模MIMO中的功率分配
摘要-本文使用深度学习的方法在大规模MIMO网络的下行链路中执行max-min和max-prod功率分配.更确切地说,与传统的面向优化的方法相比,训练深度神经网络来学习用户设备(UE)的位置和最优功率 ...
- linux下对rpm源码手工打补丁
前言 通常情况rpm包组件管理方式下的linux环境,常用打补丁的方式只有一种:修改spec文件定义的Patch和patch字段,其实spec文件中调用的底层命令还是patch. 因为业务需要要编译 ...
- matplotlib系列——中文显示
幕布视图:https://mubu.com/doc/alG8r_3iSw 参考文献:嵩天的Python课程讲义 方式一: 示例 rcParams的属性 方式二:(推荐使用) 示例: 中文字体种类
- PHP 遍历数组for foreach while
以下是使用foreach while for 三种循环展示遍历数组的概念 1:foreach( ) <?php $a = array('hank','mike','lucy'); forea ...
- Codeforces 1185G2 Playlist for Polycarp (hard version) 背包,暴力
题意及思路:https://www.cnblogs.com/Als123/p/11061147.html 代码: #include <bits/stdc++.h> #define LL l ...
- 全栈开发React-私有路由
demo import React from 'react'; import {Route,Redirect} from 'react-router-dom' import {connect} fro ...