java13面向对象深入3

大纲

这里没有写

面向对象-封装性

理解

封装( encapsulation)怎么去理解,一台电脑利用一个外壳包裹,保护了里面的电器元件,提供了少量的按键与其对接使用。我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如:电源开关。具体怎么内部实现的,我们不需要操心。

需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装,白话: “ 该露的露,该藏的藏”。

概念

​ 我们程序设计要追求“ 高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。

作用

a)、实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工,即工作中的分模块、分功能开发。
b)、隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,如某客户的银行的密码需要保密,只能对该客户开发权限。

javabean

规则

在编写 javabean 中的有一些常用的规则如:
1)、属性尽可能私有化 private
2)、访问器: setter 与 getter 访问器 >private ,一般 public 居多 setterXxx: 存储> 与 getterXxx: 查看

代码

public class Person {  //姓名         private String name;   //年龄      private int age;  //性别      private boolean sex; ​    public Person() { ​     } ​    //setter与getter ​     public String getName() {           return name;      } ​     public void setName(String name) {           this.name = name;      }      public int getAge() {           return age;      }      public void setAge(int age) {           this.age = age;      }      public boolean isSex() {           return sex;      }      public void setSex(boolean sex) {           this.sex = sex;      } }

经典MVC思想

概述

MVC是一种分层思想,一种设计模式。M:Model层(模型层 )
处理数据、业务,再把处理后的数据提供给视图层V:View层(视图层)
为用户展示数据,是数据最直观的体现。C:Controller层(业务逻辑层)
接收界面层的数据,对接受到的数据进行封装和类型转换。
调用模型层的服务进行业务逻辑的处理。
调用合适的视图去渲染数据。

优点

  • 减少代码量,提升性能(效率);
  • 提高代码的扩展性(需求改动,无需改动太多的代码)
  • 遵循高内聚、低耦合的原则权限修饰符public: 一览无遗;
    protected:子承父业 (儿子自己使用);
    default :家庭和睦;
    private :占为已有面向对象-多态性女朋友把我带到家,丈母娘一看,疯了!原来是像“曾志伟”!概述多态 polymorphism,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有 在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。
    java中如何实现多态?使用多态的好处?
    引用变量的两种类型: • 编译时类型(模糊一点,一般是一个父类)
    ​ • 由声明时的类型决定。
    ​ • 运行时类型(运行时,具体是哪个子类就是哪个子类)
    ​ • 由实际对应的对象类型决定。
    多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象代码这里没有写引用数据类型的类型转换• 子类转换为父类:自动转换
    ​ 上转型对象不能操作子类新增的成员变量和方法。
    ​ 上转型对象可以操作子类继承或重写的成员变量和方法
    ​ 如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。
    • 父类转换为子类:强制转换
    (绝不是做手术,而是父类的真面目就是一个子类,否则会出现类型转换错误抽象类概述使用了关键词 abstract 声明的类叫作”抽象类”。
    抽象类是对抽象的世界建模,是作为父类使用的。比如: 请求出一个图形的面积? 这是你的思考究竟是什么图形?这个图形太抽象了?是三角形还是原型?图形怎么求面积?这个时候就可以把图形定义为抽象类。几个要点
  • 抽象方法和抽象类均必须用abstract来修饰。
  • 抽象方法没有方法体,只需要声明不需实现。
  • 有抽象方法的类只能定义能抽象类 。
  • 相反抽象类里面的方法不一定全是抽象方法,也可能没有抽象方法。
  • 抽象类可以包含属性、方法、构造方法。
  • 抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。
  • 抽象类只能用来继承。
  • 抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽 象类。代码这里没有写接口概述​ 接口(interface ),比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专 业地实现了:规范和具体实现的分离如何定义• 格式:
    ​ • [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {
    ​ • 常量定义 //总是public static final
    ​ • 方法定义 //总是:public abstract •
    ​ }如何实现
  • 子类通过implements来实现接口中的规范
  • 接口不能创建实例,但是可用于声明引用变量类型。
  • 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
  • Java的类只支持单继承,接口支持多继承空接口只是给 JVM 的一种标识而已,就是 JVM 的通行证。 1)、java.lang.Cloneable :不是所有的对象都可以被克隆 否则CloneNotSupportedException 2)、java.io.Serializable 实际开发中,一个业务逻辑处理类永远不要去继承一个实现好的类,要么继承抽象类,要么实现接口,优先使用接口,避免单继承的局限 :abstract class表示的是”is a”关系,interface表示的是”like a”关系 1)、java.lang.Cloneable :不是所有的对象都可以被克隆 否则CloneNotSupportedException 2)、java.io.Serializable 实际开发中,一个业务逻辑处理类永远不要去继承一个实现好的类,要么继承抽象类,要么实现接口,优先使用接口,避免单继承的局限 :abstract class表示的是”is a”关系,interface表示的是”like a”关系

允许使用抽象类类型 isearchboxinfo 的对象_此对象非彼对象(面向对象)3相关推荐

  1. 允许使用抽象类类型 isearchboxinfo 的对象_Java新手必学:面向对象的特性都有哪些?...

    面向对象是Java基础阶段最重要的知识点.那么面向对象到底有哪些特性你都知道吗? 今天我们就来具体学习一下Java面向对象的特性. 1.封装: 封装给对象提供了隐藏内部特性和行为的能力.外部无法直接访 ...

  2. 允许使用抽象类类型 isearchboxinfo 的对象_Java面向对象编程三大特征 - 多态

    Java面向对象编程三大特征 - 多态 本文关键字:Java.面向对象.三大特征.多态 多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一.在理解多态之前需要先掌握继承.重写.父类引用指向 ...

  3. python哪些是可变对象_什么是Python可变对象和不可变对象

    什么是Python可变对象和不可变对象 发布时间:2020-07-22 09:59:15 来源:亿速云 阅读:60 作者:Leah 这篇文章运用简单易懂的例子给大家介绍什么是Python可变对象和不可 ...

  4. 完全理解python迭代对象_完全理解Python迭代对象、迭代器、生成器

    1.assert:python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触 ...

  5. python可变对象 不可变对象_【Python】可变对象和不可变对象

    在 Python 中一切都可以看作为对象.每个对象都有各自的 id, type 和 value. id: 当一个对象被创建后,它的 id 就不会在改变,这里的 id 其实就是对象在内存中的地址,可以使 ...

  6. 如何销毁一个实例化对象_基于脚本的游戏对象系统(1) 实例化、组件及生命周期...

    前置说明:这是2016年在开发 CreateX Engine 2 时写的文章,这个专栏也开了两年,一直空着,最近有时间慢慢填写内容,两年多过去了,对于引擎的理念也有了一些变化,可能会不一致,甚至是颠覆 ...

  7. java 类的子类对象_使用超类初始化子类对象Java

    本问题已经有最佳答案,请猛点这里访问. SuperClass object = new SubClass(); 为什么要使用一个超类来像上面那样实例化一个子类对象?因为我学会实例化对象的唯一方法是: ...

  8. 允许使用抽象类类型 isearchboxinfo 的对象_Java学习5-设计模式+抽象类/方法

    1.设计模式 设计模式:一套被反复使用.多数人知晓的,经过分类编目的.代码设计经验的总结,是软件开发人员在软件开发过程中面临的一般问题的解决方案. 项目中合理的运用设计模式可以完美的解决很多问题: 每 ...

  9. 允许使用抽象类类型 isearchboxinfo 的对象_final关键字、抽象类以及接口

    知识点思维导图 final关键字 基本概念 final本意为"最终的.不可改变的",可以修饰类.成员方法以及成员变量. 使用方式 final关键字修饰类体现在该类不能被继承. fi ...

最新文章

  1. 009_字符串内建函数
  2. BZOJ-1927-星际竞速-SDOI2010
  3. Dizzy Cows(拓扑)
  4. 大学生应当趁早谋划未来
  5. 浅析GDAL库C#版本支持中文路径问题
  6. oracle ctl 递增,增加oracle的控制文件
  7. linux bzip指定名称,bzip2命令_Linux bzip2 命令用法详解:将文件压缩成bz2格式
  8. 原生js实现图片验证码
  9. 使用Xmanager - Xbrowser打开远程最小化方式安装的CentOS 6.10的图形化界面
  10. 分析如烹饪:让我们一起做数据大厨吧!
  11. java解析word 波浪线,word页面边框双波浪线
  12. 编写程序实现输入一个不超过100的十进制正整数,输出与其相等的二进制形式
  13. LibreELEC 8.2.4:支持最新Raspberry Pi 3 Model B+
  14. ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
  15. 爪哇国新游记之五----继承与接口
  16. 数字图像处理-美图秀秀:瘦脸算法
  17. 关于群论在量子力学中的应用
  18. c语言扫雷游戏计时功能_做游戏,学编程(C语言) 20 扫雷
  19. 洲明8K超高清地砖屏亮相2022北京冬奥会;汉高计划将两大业务部合并为消费品牌业务部|美通社头条...
  20. 1446连续字符594和谐子序列(哈希)594最长和谐子序列

热门文章

  1. Android 动画以view中心点旋转动画
  2. vue js table colspan rowspan
  3. CASS软件学习笔记
  4. 数据结构与算法实战-C++实现
  5. 几位大佬启蒙老师和女神启蒙老师的博客,大家可以多关注下
  6. Luogu 4284 [SHOI2014]概率充电器
  7. HDU5923-Prediction-有继承味道的并查集
  8. node转发请求 .csv格式文件下载 中文乱码问题 + 文件上传笔记
  9. mysql5.6.8源码安装
  10. mysql索引原理剖析