1、三大特征是封装、继承和多态

2、封装

特点: 
需要修改属性的访问控制符为private;
创建getter/setter方法用于属性的读写;
在getter/setter方法中加入属性控制语句,用于判断属性值的合法性;
优点:
将变化隔离
便于使用
提高重用性
提高安全性
缺点:将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度!

3、继承(extends)

特点
子类比父类强大 优点
减少代码量,能很好的提高复用率。
使类与类之间存在继承关系,是实现多态操作的前提 缺点
继承使得多个类之间具有了子父类关系,当一个类存在多个子类的时候,如果父类发生变化,那么这些子类会跟着一同变化,造成类与类之间的“强耦合”关系!

4、多态

特点
多态指的是对象的多种形态。
引用多态和方法多态。继承是多态的实现基础。
必须有子类和父类,具有继承或实现(继承)
子类必须重写父类的方法(重写)
父类的引用变量指向子类的对象(向上转型)

优点
可替换性,多态对一存在的代码具有可替代性
可扩充性:增加的子类不影响已存在的类的特性的运行和操作
接口性:多态时超类通过方法签名想子类提供了一个公共的接口,由子类来完善或者覆盖它而实现的
灵活性:在应用中体现了灵活多样的操作,提高了使用的效率
简化性: 多态简化对应用软件的代码的编写和修改过程,尤其在处理大量的对象的运算和操作时,这个特点尤为突出和重要 缺点
只能使用父类的引用访问父类的成员
成员变量:编译与运行时期都看父类!
成员方法:编译时期看父类,运行时期看子类

Java类的三大特征的更多相关文章

  1. JAVA:类的三大特征,抽象类,接口,final关键字<3>

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  2. Java学习第三篇:类的三大特征,抽象类,接口,final关键字

    一.类的三大特征 1.封装性 (1).什么是封装 封装就是把抽象出的数据和对数据的操作封装在一起, 数据被保护在内部, 程序的其他部分只有通过被授权的操作(成员方法), 才能对数据进行操作. (2). ...

  3. Java面向对象的三大特征

    Java面向对象的三大特征 java面向对象的三大特征:“封装.继承.多态”.更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. ...

  4. Java的OOP三大特征之一——继承

    Java的OOP三大特征之一——继承 子类继承父类的特征和行为(属性和方法),使得子类具有父类的各种属性和方法.或子类从父类继承方法,使得子类具有父类相同的行为. 特点:在继承关系中,父类更通用.子类 ...

  5. Java中面向对象三大特征

    也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是&q ...

  6. Java面向对象的三大特征和五大原则

    Java面向对象的三大特征 封装 封装(Encapsulation)是指属性私有化,根据需要提供setter和getter方法来访问属性.即隐藏具体属性和实现细节,仅对外开放接口,控制程序中属性的访问 ...

  7. 第9章 Java类的三大特性之一:继承

    1.什么是继承 子类继承父类就是对父类的扩展,继承时会自动拥有父类所拥有的处private之外的所有成员作用:增加代码复用语法格式: class 子类名 extends 父类名{…………}第9章 Ja ...

  8. Java的OOP三大特征之一——多态

    OOP(面对对象)三大特征之一——多态 What:多态性是指允许不同类的对象对同一消息作出响应,多态性包括参数化多态性和包含多态性,多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用 ...

  9. JAVA基础之——三大特征、接口和抽象类区别、重载和重写区别、==和equals区别、JAVA自动装箱和拆箱

    1 java三大特征 1)封装:即class,把一类实体定义成类,该类有变量和方法. 2)继承:从已有的父类中派生出子类,子类实现父类的抽象方法. 3)多态:通过父类对象可以引用不同的子类,从而实现不 ...

随机推荐

  1. python:批量修改文件名批量修改图片尺寸

    批量修改文件名  参考博客:https://www.cnblogs.com/zf-blog/p/7880126.html 功能:批量修改文件名 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  2. Vue动态添加v-model绑定及获取其返回数据

    从数据库拿到的动态数据绑定到页面对应的v-model或者v-bind上,并且根据对页的操作获取到返回的值: 1.首先在data里定义一个数据 timeTip 为一个空数组 data () { retu ...

  3. 瑞士军刀DLib的VS2015编译

    Dlib的官方解释是: Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creati ...

  4. Maven:程序包不存在,找不到符号

    maven build时出现了以下的错误: 程序包xx.xx不存在,xxx找不到符号 原因一:DAO层依赖Service接口层的Bean类,在pom.xml中添加了对Service的依赖,也因此引入了 ...

  5. Python中的常用内置对象之map对象

    如果你了解云计算的最重要的计算框架Mapreduce,你就对Python提供的map和reduce对象有很好的理解,在大数据面前,单机计算愈加力不从心,分布式计算也就是后来的云计算的框架担当大任,它提 ...

  6. Img转base64

    function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width ...

  7. Linux中Tomcat 自动设置CATALINA_HOME方法

    Linux中Tomcat 自动设置CATALINA_HOME方法 在服务器部署中,我们经常会出现“在一个服务器上运行多个tomcat服务”的情况. 使用如下方法设置,可以无限复制平移扩展Tomcat, ...

  8. Vundle安装及使用

    Vundle是vim上的插件管理器.只需要在.vimrc添加上控件名,Vundle可以帮我们下载到插件文件夹/Users/{username}/.vim/bundle中. 有一个vim插件的资源网站, ...

  9. Thread--生产者消费者

    2个生产者,2个消费者,库存容量2 package p_c_allWait.copy; import java.util.LinkedList; import java.util.List; publ ...

  10. elk常用知识点

    1.让文件每次都从头读取: 当有时候需要重新抽取全日志时候,则需要先删除ES上的索引,然后在logstash上input插件配置sincedb_path => "/dev/null&q ...