一、什么叫面向对象

  万物皆对象(待更正)

二、面向对象三大特征

  抽象:把一类对象共同特征进行抽取构造类的过程,包括两种抽象:第一种是数据抽象,也就是对象的属性。第二种是过程抽象,也就是对象的行为

  封装:可以隐藏实现细节,使代码模块化。
  继承:可以拓展已存在的代码模块(类),实现代码重用。
  多态:类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性的正确调用,实现接口重用。
  Java中多态的机制:重载与重写

  重载:名称相同,参数可辨,在参数可辨的情况下不关心返回值(对访问限定符无要求),编译期即可确定调用哪个方法

  重写:(发生于父子类的继承关系中)函数名称、参数列表完全相同,

      子类重写方法返回值必须等于父类返回值(或者其子类)

      访问修饰符的限制一定要大于等于被重写方法的访问修饰符——里氏替换原则,如果访问变小导致无法访问,则不符合里氏替换

     重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
     不能重写标志为final,static的方法 

三、接口和抽象类的区别

  从设计层面来说,抽象是对类的抽象,是一种模板设计,

  接口是行为的抽象,是一种行为的规范 
    语法规范请参见http://www.importnew.com/12399.html
  接口的其他常见用法可以分为:
    单方法接口(也即是JDK8中的函数式接口)、声明式接口(serializable接口)、常量接口(只保留常量,请勿使用)
    Java的接口应当仅仅作为类型声明,想管理常量,请使用常量类!
    也就是Java与模式中提到的,代码的逻辑是从下到上进行公共提取向上流动,而数据则是反方向,也就是抽象类的数据越少越好!

 四、重要关键字

  1.final

    final修饰变量——基本类型变量无法被改变,引用类型变量引用无法指向其它对象(引用变量不能变,指向的对象可以变)

    这里说的初始化是指两个地方的初始化:要么是定义时初始化,要么通过构造函数初始化,两者二选一

public static final int i = 1;
public static final StringBuffer sb = new StringBuffer("hello");
public static void main(String[] args) {
// i = i + 1;基本类型,无法重新赋值
sb.append("world");// 引用所指向对象内容可以改变
//sb = new StringBuffer("world");无法重新指向新的对象
}

    final修饰方法——无法被重写

    final修饰类——无法被继承

  更多final关键字相关的解析,参见:http://www.cnblogs.com/dolphin0520/p/3736238.html

                  http://blog.csdn.net/bettarwang/article/details/26744661

Java基础—面向对象的更多相关文章

  1. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

  2. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  3. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  4. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  5. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  6. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  7. Java基础——面向对象

    Hello 大家好,我又来啦,今天我们来说说Java的面向对象. 还记得之前去面试几家公司的实习生职位,大部分面试官都问过我有关面向对象 的问题,不知道以后还会不会问,估计是不会了吧...(:3[▓▓ ...

  8. 九、Java基础---------面向对象封装、继承、多态

    封装 1.1 基本概念  封装(encapsulation)是面向对象三大特征之一,它是指将对象的状态信心隐藏在对象的内部,不允许外部直接进行访问,而是通过该类提供的方法来实现对内部信息的操作和访问. ...

  9. 面试题-Java基础-面向对象

    1.面向对象软件开发的优点有哪些? 代码开发模块化,更易维护和修改.代码复用.增强代码的可靠性和灵活性.增加代码的可理解性.面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会 ...

  10. JAVA基础——面向对象三大特性:封装、继承、多态

    JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...

随机推荐

  1. Vue -- webpack 项目自动打包压缩成zip文件

    这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能 ...

  2. LeetCode题解之Merge k Sorted Lists 解法二

    1.题目描述 2.分析 利用 vector 存储指针,同时合并k个链表. 3.代码 ListNode* mergeKLists(vector<ListNode*>& lists) ...

  3. SQL Server全文搜索

    SQL Server全文搜索 看这篇文章之前请先看一下下面我摘抄的全文搜索的MSDN资料,基本上MSDN上关于全文搜索的资料的我都copy下来了 并且非常认真地阅读和试验了一次,并且补充了一些SQL语 ...

  4. post请求的四种数据格式

    1.application/json:这是最常见的 json 格式:{"input1":"xxx","input2":"ooo&q ...

  5. javascript 正则(将数字转化为三位分隔的样式)【转】

    原文:https://www.cnblogs.com/sivkun/p/7123963.html })+\b)/g, ',') 解释: \b : 匹配单词边界,就是位于字符\w([a-zA-Z0-9_ ...

  6. 转:log4net使用详解

    说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...

  7. python基础学习1

    一.python第一个程序 print("hello world") 二.变量的命名规则 1. 字母数字下划线组成 2. 不能以数字开头,不能含有特殊字符和空格 3. 不能以保留字 ...

  8. 2019 wannafly winter camp day 3

    2019 wannafly winter camp day 3 J 操作S等价于将S串取反,然后依次遍历取反后的串,每次加入新字符a,当前的串是T,那么这次操作之后的串就是TaT.这是第一次转化. 涉 ...

  9. loli的搜索测试-我真不知道是第多少次了

    搜索测试 又到了....并不激动人心的搜索测试时间. 今天和以前还是有一点不一样的,新高二的学长们也参加了(也就是说我们又要被吊打了) 话不多说,看题: fz:填一个5*5的质数方阵,要求每行,每列, ...

  10. intellij IDEA软件java项目No SDK配置jdk开发,安装IDEA软件步骤

    我们在使用intellij idea开发java项目的时候,我们在创建的时候会发现提示No SDK,影响创建和使用项目,我们需要下载和配置需要的JDK 电脑 1我们使用intellij idea创建j ...