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)在运行程序的 ...
随机推荐
- Hive if和coalesce函数
链接:https://blog.csdn.net/qq_26442553/article/details/79465417 if 函数举例:
- Oracle 表空间、用户
一.表空间 临时表空间 创建临时表空间范例 CREATE TEMPORARY TABLESPACE duke_temp /* 临时表空间名称:duke_temp */ tempfile 'C:\ora ...
- ucenter 整合同步登录的内部实现原理
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位 ...
- JQuery判断radio(单选框)是否选中和获取选中值
一.设置选中方法 代码如下: $("input[name='名字']").get(0).checked=true; $("input[name='名字']"). ...
- Vue.config.silent = true
Vue.config vue的全局配置文件 silent默认值是false Vue.config.silent = true 取消Vue所有的日志和警告
- HDU 1029Ignatius and the Princess IV
Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K ( ...
- 【转】linux下使用man查看C函数用法
大家都知道在Unix/Linux中有个man命令,可以查询常用的命令,函数.可是对于我们这样只知道用"man 函数名"来查询的人来说,会遇到很多问题,比如: man read,我想 ...
- 浮点字符串转int类型报错,解决
一,直接上代码,先转double,再强转int,看你是选择,舍入,还是直接取整数位 var a1 = "1500.76"; var a2 = Convert.ToDouble(a1 ...
- 面试题。线程pingpong的输出问题
第一种情况:public class Main { public static void main(String args[]) { Thread t = new Thread() { public ...
- go语言从例子开始之Example17.指针
Go 支持 指针,允许在程序中通过引用传递值或者数据结构 Example: package main import "fmt" func zeroval(ival int){ iv ...