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

java13面向对象深入3

大纲

这里没有写

面向对象-封装性

理解

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

f22a6f5000921dd4f4eabe0da984b21e.png


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

概念

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

作用

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”关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python turtle库输出文字_python turtle库学习笔记

#绘制时钟#codingutf-8importturtle as ttfrom datetime import *#当前日期属于一周的第几天defWeek(t):week ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]returnweek[t.w…

后勤报修项目心得

耗时两天左右,完成了预期任务,来做个总结1.简单说下感受2.说说整个经历3.温习下自己在实战项目操作过程中出现的问题 1.因为之前有过一个礼拜左右时间上手预热项目,果然这样学就是上手快,比起在学校里的课,效率提升了很…

hbase java admin_java连接hbase(一):Admin功能接口表管理

本文hbase版本基于hbase-1.0.0-cdh5.6.1。Admin接口主要操作表创建,删除,列族的增删,表的清空,region的增删,合并操作。import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfigurat…

复制url直接能跳过验证_python 爬虫如何突破登录验证

我用 python 做爬虫爬过不少数据,比如在 google play 爬应用信息;在 instragram, 500px 爬图片;当然爬虫的作用不止于此,比如定时去某个网站签到,妈妈再也不用担心我忘记签到了这些网站支持游客访问,但要访…

[2-sat]HDOJ3062 Party

中文题 题意略 学2-sat啦啦啦 2-sat就是 矛盾的 ($x、x’$不能同时取) m对人 相互也有限制条件 取出其中n个人 也有可能是把一件东西分成 取/不取 相矛盾的两种情况 (那就要拆点啦~) 取其中n件 做法是 暴力 和 强连通 两种 重点在于建图: 对于x,记 取…

node作为java中间间_node作为中间服务层如何发送请求(发送请求的实现方法详解)...

GET请求:var http require(http);var qs require(querystring);var data {a: 123,time: new Date().getTime()};//这是需要提交的数据var content qs.stringify(data);var options {hostname: 127.0.0.1,port: 10086,path: /pay/pay_callback? content,metho…

python目标识别代码_利用ImageAI库只需几行python代码超简实现目标检测

什么是目标检测目标检测关注图像中特定的物体目标,需要同时解决解决定位(localization) 识别(Recognition)。相比分类,检测给出的是对图片前景和背景的理解,我们需要从背景中分离出感兴趣的目标,并确定这一目标的描述(类别和位置…

Winodws live writer

发布一篇试试。 转载于:https://www.cnblogs.com/DotNetCSharp/p/4742956.html

java里面value_「Java基础知识」Java中包含哪些运算符

原标题:「Java基础知识」Java中包含哪些运算符在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等。算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左边,所以一般格式…

三元组法矩阵加法java_计算机视觉学习笔记(2.1)-KNN算法中距离矩阵的计算

本笔记系列以斯坦福大学CS231N课程为大纲,海豚浏览器每周组织一次授课和习题答疑。具体时间地点请见微信公众号黑斑马团队(zero_zebra)和QQ群(142961883)发布。同时课程通过腾讯课堂(百纳公开课)进行视频直播.欢迎参与…

[转]Java常用概念解答

1. 事务是什么? 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、 一致性、隔离性和持久性)属性,只有这样才能成为一个事务: 原子性 事务必须是原子…

idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...

之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试。打开IDEA,创建新项目:然后选择Maven,以及选择自己电脑的jdk:接下来自定义GroupId以及ArtifactI…

Linux 格式化磁盘命令mkfs

linux格式化磁盘命令mkfs指令:mkfs使用权限 : 超级使用者使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]说明 : 建立 linux 档案系统在特定的 partition 上参数 :device : 预备检查的硬盘 partition…

servlet 返回可访问文件_JavaWeb技术(4):Servlet的理解(上)

我们在开发中无时无刻都在与Servlet进行接触,只是因为框架的封装性,我们很少直接地去操作servlet,但再怎么封装,基本的思路都不会变化,变得只是实现的方式,Servlet是什么:网上的回答基本是Servl…

java ldap 分页_具有从属引用的 LDAP 分页查询未正确处理

具有从属引用的 LDAP 分页查询未正确处理09/14/2020本文内容本文提供了一些方法来避免使用从属引用的 LDAP 分页查询未正确处理的问题。原始产品版本: Windows 8原始 KB 编号: 2561166症状你有一个应用程序,使用 ldap_search_ext 或 ldap…

js分家效应

(原创文章,转载请注明出处) 有继承,那么就有分家。让我们看以下例子。 var parents function(){}parents.prototype.money 200;var children function(){}children.prototype new parents();var parent new parents();var ch…

如何设置打印的时候不加上页面链接_excel表格的这10个打印小技巧,办公室财务人员记得收藏...

打印工作表是日常工作中最常见的一个工作,也是Excel在工作中最常用的一个地方,如何做到快速准确地打印文件呢。今天文理会计小编给大家从网上整理了几个打印文件的小技巧。1、打印标题打印的工作表的数据有好多页的时候,为了查看方便&#xf…

java sql objects_第十五章-简书.sql

-- ## 练习1-- 1. 创建一个视图,通过该视图可以查询到工资在2000-5000内并且姓名中包含有A的员工编号,姓名,工资。create or replace view viewSal2k_5kas select empno,ename,sal from empwhere sal between 2000 and 5000and ename like %A…

rabbitmq 拉取消息太慢_面试官:消息队列这些我都要问

作者:mousycodersegmentfault.com/a/1190000021054802消息队列连环炮项目里怎么样使用 MQ 的?为什么要使用消息队列?消息队列有什么优点和缺点?kafka,activemq,rabbitmq,rocketmq 都有什么去呗?如何保证消息队列高可用…

java 星期顺序_第8周 【项目3-顺序串算法】

/**Copyright (c)2017,烟台大学计算机与控制工程学院*All rights reservrd.*作者:李欣豪*完成时间:2017年12月14日*版本号:v1.0*问题描述:采用顺序存储方式存储串,实现下列算法并测试:(1)试编写算法实现将…