上篇文章说了jdk的安装和java环境的配置,这篇文章主要说下java的特性。

首相说下,编程语言分为面向过程和面向对象,而java就是一种面向对象的编程语言。

什么是面向过程编程呢?就是一流程为单位,注重最后的结果。比如小明要从郑州去北京,他第一步就是要先买火车票,然后去火车站乘车,坐火车到北京。这就是面向过程编程,必须每一步都做到,才会有最后的结果。

这样一来面向过程编程的缺点就很明显了:1、不利于程序的维护   2、功能之间有很强的关联性,就是说你每一次改动一步,可能就会涉及到好几步的更改。

那么什么又是面向对象变成呢?就是把一个事物看做一个整体,从事物的属性和功能两方面进行描述

面向对象编程的特点就是:

1、面向对象的编程思想更贴近人的正常思维模式

2、面向对象的编程来源于生活服务于生活

3、面向对象的编程思想中肯定会用到面向过程的思想

4、面向对象的特征:抽象、封装、继承、多态

这就要来了解下什么是对象了。

任何一个具体的事物都是一个对象,在《java编程思想》中讲到:万事万物皆对象

任何一个对象都是唯一的,即使两个相近或者相似的事物都是两个不同的对象,就像世界上找不到两片相同的树叶一样,任何一个对象一旦创建就会唯一的存在。而且对象也不一定是一个切实存在的实物,任何一项法规、政策、虚拟物品等都是一个对象。

抽象      

就是对同一个事的共有的属性(特征)和方法(功能/行为)进行抽取、归纳、总结。如:汽车都有轮子、发动机等这些就是汽车的属性,汽车能跑、能载人载物等这些就是汽车的功能。这样就可以把汽车的这些功能与属性抽取出来写在一个类中,供汽车这一类事物使用。

封装  

在抽象中将属性与方法写在一个类中就是封装,而封装就是为了保证抽象出来的特征和方法的安全性,封装就是包装的过程,注意封装不是绝对的封装,如果其他程序要获取已经封装好的数据,就要通过程序指定的接口或方法才能获取。

继承

        特点:继承要有一定的层次结构,还要具备一定的可传递性

     子类继承父类的属性和方法,但是私有属性和构造方法除外

     子类除了拥有从父类继承过来的属性和方法外,子类还可以拥有属于自己的属性和方法

     在java中只支持单一继承(也就说一个子类只能有一个父类,但一个父类可以有多个子类)

     判断两个类的继承关系是否成立,可以通过“is-a”(是一个)开判断

子类不能继承父类的构造方法:父类的构造方法创建的是父类的对象,以为继承要有一定的层次结构,而且要具备一定的额可传递性,如果子类继成父类的构造方法就违反了这一条,所以子类不能继承父类的构造方法。

如何实现继承

在java中通过extends关键字来实现继承,语法

【访问修饰符】  class   子类    extends  父类{   }

继承的作用

提高代码的重用性

一个源文件中可以包含多个类,但只能有一个类带public,而且带public访问修饰符的类的类名要和源文件的文件名相同,main方法也要写在带public的类中。

当创建子类对象时,那么一定会先执行父类的构造方法创建父类对象,然后在调用子类的构造方法创建子类的对象。而且在创建子类的对象时无论是调用有参数还是无参数的构造方法,JVM都会默认的代用父类的无参数的构造方法创建父类的对象。

多态

多态就是指同一种事物在不同的情况下的多种表现形式

多态的表现形式有:方法重写,方法重载,接口和接口的继承,类和类的继承

方法的重载:在同一个类中,有多个方法名相同,但参数列表不同的方法,这就是方法的重载,参数列表的不同包括:参数个数,类型,顺序的不同。普通方法和构造方法都可重载,方法重载会根据传递的参数来决定调用哪个方法,返回值不同,其他都相同的情况是构不成方法的重载

方法的重写:发生在子类继承父类的关系中,父类中的方法被子类继承,方法名,返回值类型,参数完全一样,但是方法体不一样那么说明父类中的该方法被子类重写了。

目的:当父类中方法,无法满足子类的需求时,那么子类可以对父类的方法进行扩展

注意:方法重写子类的访问修饰符的范围不能缩小

Java基础之java的四大特性的更多相关文章

  1. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  2. Java基础技术-Java其他主题【面试】

    Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...

  3. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  4. Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...

  5. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  6. Java基础-使用JAVA代码剖析MD5算法实现过程

    Java基础-使用JAVA代码剖析MD5算法实现过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Java基础和JDK5.0新特性

    Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...

  8. Java基础20:Java8新特性终极指南

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  9. java基础(一)-----java的三大特性之封装

    面向对象编程有三大特性:封装.继承.多态.本文将介绍java的三大特性之封装 封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成 ...

  10. java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

随机推荐

  1. IE8兼容性问题 val()

    IE8有时使用val()不正常,需要使用attr('value') 另外还有一些其他问题: https://blog.csdn.net/chenyiminnanjing/article/details ...

  2. BZOJ 1412--狼和羊的故事(最小割)

    1412: [ZJOI2009]狼和羊的故事 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3316  Solved: 1664[Submit][St ...

  3. django入门-测试-part5

    尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6515996.html 完全翻译自官方文档 https://docs.djangoproje ...

  4. ElasticSearch5.0——IK词库加载

    Dictionary ConfigurationIKAnalyzer.cfg.xml can be located at {conf}/analysis-ik/config/IKAnalyzer.cf ...

  5. ElasticSearch关联查找

    ElasticSearch是一个基于Lucene的开源搜索引擎,支持全文检索,提供restful接口.在ES中,提供了类似于MongoDB的面向文档存储服务,这种面向文档的存储非常灵活,但是文档与文档 ...

  6. 编译原理(六)自底向上分析之LR分析法

    自底向上分析之LR分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本概念 1. LR分析:从左到右扫描(L)自底向上进行规约(R),是规范规约,也即最右推导(规范推导) ...

  7. js 封装trim()方法,去掉空格

    <script> //定义一个对象 - 名字是$ var $$ = function() {}; //原型 $$.prototype = { $id:function(id) { retu ...

  8. 如何在ASP.NET Core 2.0中使用Razor页面

    如何在ASP.NET Core 2.0中使用Razor页面  DotNetCore2017-11-22 14:49 问题 如何在ASP.NET Core 2.0中使用Razor页面 解 创建一个空的项 ...

  9. asp.net core实时库:SignalR(1)

    SignalR的基本概念 前言 最近在自己的项目中实践了SignalR的使用,asp.net core 2.1版本的时候建立了对SignalR的支持,SignalR的可使用Web Socket, Se ...

  10. python学习,day4:装饰器的使用示例

    ---恢复内容开始--- 装饰器:本质是函数,(装饰其他函数)就是为其他函数添加附加功能 装饰器有其独特的原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 例子 import ...