1、面向对象(OOP)的特征

•抽象 :就是把现实世界中的某一方面提取出来,用程序代码表示,抽象出来的一般叫做类或接口。

抽象包括两个方面,一个数据抽象,另一个是过程抽象.

过程抽象 :表示功能的操作,可理解为行为就是方法.

数据抽象 :表示数据类型和施加于该类型对象的操作,可理解为对象的属性.

•封装 :是对象和类概念的主要特性,是把过程和数据包围起来,对数据的访问只能通过已定 义的界面。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。如私有变量,用set,get方法获取。

•继承:是一种联结类的层次模型,并且允许和鼓励类的重用,提供一种明确表达共性的方法。新类继承原始类的特性,新类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。因此可以说,继承为了重用父类代 码,同时为实现多态性作准备.

•多态:是指允许不同类的对象对同一消息做出响应.多态性包括参数化多态性和包含多态性. 多态性语言具有灵活/抽象/行为共享/代码共享的优势,很好的解决了应用程序函数同名问题.总的来说,方法的重写,重载与动态链接构成多态性.java引入多态的概念。原因之一就是弥补类的单继承带来的功能不足.。

动态链接 :对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将调用子类中的这个方法,这就是动态链接.

以上就是面向对象的基本特征。

继承与重载:子类与父类的关系,重载方法的调用问题。

子类对象可以直接当成父类对象用,但是反过来就不行.

比如:人是父类,学生是人的子类,所以学生对象一定具备人对象的属性,但是人对象就未必具有学生对象的特性.但是子类对象当做父类来用,将失去子类所有特性,只保留与父类同名的属性和方法,此时可以对父类方法进行重写。

一个类中如果定义了重载的方法,则系统在调用方法时,会根据参数的类型自动选择调用合适的方法

2、final, finally, finalize 的区别。

•final :修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。

将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为搜索final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。

被声明为final的方法也同样只能使用,不能重载。

•finally:再异常处理时提供 finally 块来执行资源释放。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

•finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

java基础知识1---面向对象及final,finally,finalize区别相关推荐

  1. Java基础知识(二) 面向对象的技术

    Java基础知识 面向对象的技术 1. 面向对象与面向过程有什么区别 2. 面向对象有哪些特征 3. 什么是继承 4. 组合和继承的区别 5. 多态的实现机制 6. 重载和覆盖有什么区别 7. 抽象类 ...

  2. Java基础知识Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是相对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  3. Java基础知识——Sting、StringBuild、StringBuffer的区别

    String类是不可变类,任何对String的改变都会引发新的String对象的生成: StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象,线程安全的. StringBu ...

  4. Java基础知识(一) 基本概念

    Java基础知识 基本概念 1. Java语言的优点 2. Java与c/c++有什么异同 3. 为什么需要public static void main(String[] args)这个方法 4. ...

  5. 跳槽者、应届生必看JAVA面试题系列 - JAVA基础知识(四)

    一: 前言 莫等闲,白了少年头,空悲切. 二: 面试挑战   在文章开始前,首先安利下"面试挑战": 凡是满足下面的挑战条件的,如果一个月内没有拿到一个Offer的,免费提供简历封 ...

  6. JAVA基础知识(四)面向对象基础

    文章目录 JAVA基础知识(四)面向对象基础 1. 类 2. 访问权限修饰符 3. `static`修饰符 3.1 静态代码块 4. `new`一个对象 5. 方法 5.1 `this` 5.2 方法 ...

  7. 【转】Java基础知识整理

    本博文内容参考相关博客以及<Java编程思想>整理而成,如有侵权,请联系博主. 转载请注明出处:http://www.cnblogs.com/BYRans/ PDF版下载链接:<Ja ...

  8. java 基础知识总结

    Java基础知识总结 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思 ...

  9. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  10. Java基础知识复习(一)

    Java基础知识复习(一) 目录 Java简介 命名规则 八种基本的数据类型 字面量 类型转换 变量的形态 逻辑运算符 位运算 移位运算 习题知识点 目录 Java简介 Java是由Sun公司在199 ...

最新文章

  1. Linux 终端命令行提示符的艺术--PS1进阶
  2. java xml文件内容替换_java读取xml文件并转换成对象,并进行修改
  3. 全球及中国交联的高密度聚乙烯行业投资应用与供应需求规模分析报告2022版
  4. 使用Speedion 3.0.17或更高版本轻松从事务中返回值
  5. ubuntu 10.10 修改下载源的方法
  6. 【使用注意】Boolean是final类型,值初始化后不能被更改
  7. android ndk怎样加载o文件_Android开发:JNI与NDK全面剖析与实战
  8. 基于stm32单片机外文文献_13个基于STM32的经典项目设计实例,全套资料~-嵌入式系统-与非网...
  9. js获取url一级域名的方法
  10. 解决 zsh:command not found
  11. DAO是什么?为什么我们需要DAO?
  12. Android实现60秒倒计时
  13. 瑞芯微(RKDocs)平台技术开发资料汇总(rk3188,rk3066,RK3128,rk3288)
  14. node--压缩文件夹
  15. css 文字发光效果
  16. 如何判断是否是ssd硬盘?win10查看固态硬盘的方法
  17. 继被Twitter永久封杀后!Sci-Hub再遭英国网络运营商封禁!
  18. 字幕制作之时间轴制作(1) - 字幕的无中生有
  19. 正方形数组的数目(DAY 81)
  20. 猫和老鼠服务器未响应是怎么回事,猫和老鼠手游怎么玩不了 游戏设置及异常解决方法...

热门文章

  1. 什么是故事板?(故事图、Storyboard)(软件显示效果的视觉草图,用于视频创作和广告设计,表达作者的创意)
  2. python tensorflow tf.session类
  3. Spring的控制反转以及依赖注入,控制反转使程序具有高拓展性。
  4. python申明文件编码_Python源代码文件的文本编码
  5. private访问权限java_Java之访问权限
  6. html全局布局 vue_基于Vue+Element的电商后台管理系统
  7. 的it生活_IT圈生活图鉴篇三丨下班后的突变画风
  8. Windows PowerShell下基础操作
  9. js获取下月时间_js 获取日期时间段
  10. python 遍历listbox_Python仿evething的文件搜索器 !