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核心基础知识(一):概念、语法、使用、源码的更多相关文章

  1. 吾日三省吾身 java核心代码 高并发集群 spring源码&思想

    阿里面试题    未解决https://my.oschina.net/wuweixiang/blog/1863322 java基础  有答案  https://www.cnblogs.com/xdp- ...

  2. JAVA相关基础知识

    JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  3. java必备基础知识(一)

    学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...

  4. 什么才是java的基础知识?

    近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. ...

  5. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  6. java部分基础知识整理----百度脑图版

    近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...

  7. Java数据结构基础知识你知道多少?

    http://www.cnblogs.com/qlky/p/7359462.html http://www.importnew.com/28263.html HashMap( java 7) 构造函数 ...

  8. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  9. java学习笔记(3)数据类型、源码、反码、补码、精度损失、基本数据类型互相转换

    关于java中的数据类型: 1.数据类型的作用是什么? 程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用的空间大小不同. 数据类型的作用是指导java虚拟机(JVM)在运行程序的 ...

随机推荐

  1. hdu 5564 Clarke and digits

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5564 ------------------------------------------------ ...

  2. C++ win32 dll 引用外部CLR,加载托管程序集异常-Error 10 error LNK2019: unresolved external symbol _CLRCreateInstancet

    异常: Error 10 error LNK2019: unresolved external symbol _CLRCreateInstance@12 referenced in function ...

  3. 105、TensorFlow的变量(一)

    import tensorflow as tf mammal = tf.Variable("Elephant", tf.string) ignition = tf.Variable ...

  4. 102.kaldi 斯坦福语音识别工具的编译

    接着上一节,在编译完了openFST有限状态机之后,便开始了最重要部分,语音识别插件的编译过程 首先看目录是如下所示的 1.首先添加openBLAS的支持,这是一个矩阵运算库,个人觉得这个矩阵运算库 ...

  5. SQL语言基础-基本概念

    SQL:IBM的圣约瑟(SanJose),SEQUEL 2(也就是现在的SQL语言) 1979.Oracle首先提出提供了商用的SQL语言 1986.10美国ANSI采用SQL作为关系数据库管理系统的 ...

  6. 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录

    目录 目录 前文列表 扩展阅读 第三方登录流程 OAuth 应用 OAuth 实现 Facebook 第三方登录 实现效果 前文列表 用 Flask 来写个轻博客 (1) - 创建项目 用 Flask ...

  7. Jenkins构建触发器的区别

    Build periodically:定时进行项目构建或执行(它不care源码是否发生变化),配置如下: 0 2 * * *  (每天2:00 必须build一次源码) 如果是要定时执行脚本,需要选择 ...

  8. jQ无法设置checkbox变成选中状态

    设置以后checkbox并没有变成选中状态,用chrome调试看了一下,checkbox中确实有checked属性,针对这个问题,大家可以参考下本文 代码如下: $("input" ...

  9. Embedding和Word2Vec实战

    在之前的文章中谈到了文本向量化的一些基本原理和概念,本文将介绍Word2Vec的代码实现 https://www.cnblogs.com/dogecheng/p/11470196.html#Word2 ...

  10. Volatile 只保证可见性,并不保证原子性

    [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/52525724   在说明Java多线程内存可见性之前,先来简单了解一下J ...