------【面向对象】
文章平均质量分 57
独孤文彬
人生的转折从大米时代开始
展开
-
javaSE_8系列博客——Java语言的特性(三)--类和对象(11)--从方法返回值
以下几种情况,会让一个方法返回到调用它的代码 1. 完成方法中的所有语句 2. 达到return语句 3. 抛出异常(稍后覆盖)以第一个为例。 在方法声明中声明方法的返回类型。在方法的正文内,你使用return语句来返回值。 声明为void的任何方法都不返回值。它不需要包含return语句,但它可以这样做。在这种情况下,return语句可以用于分支出控制流块并退出该方法,并且简单地使用如原创 2017-05-09 11:16:48 · 571 阅读 · 4 评论 -
javaSE_8系列博客——Java语言的特性(五)--接口和继承(2)--定义接口
接口声明包括修饰符,关键字接口,接口名称,父接口(如果有)的逗号分隔列表)和接口体。例如:public interface GroupedInterface extends Interface1, Interface2, Interface3 { // constant declarations // base of natural logarithms double E = 2翻译 2017-06-25 13:20:51 · 353 阅读 · 7 评论 -
javaSE_8系列博客——重要的基础Java类——Excavations(异常处理机制)--3--捕捉异常或指定要求
有效的Java编程语言代码必须符合Catch或指定要求。这意味着可能引发某些异常的代码必须由以下任一方包括:一个捕获异常的try语句。try语句中必须为异常提供一个处理程序一种指定它可以抛出异常的方法。该方法必须提供一个列出异常的throws子句不能遵守Catch或指定要求的代码将无法编译。并不是所有的异常都受到“捕捉”或“指定要求”的限制。为了理解为什么,我们需要看看三个基本类别的例外情况,翻译 2017-07-04 16:54:18 · 390 阅读 · 6 评论 -
javaSE_8系列博客——Java语言的特性(五)--接口和继承(3)--实现接口
实现一个接口要声明一个实现接口的类,在类声明中包含一个implements子句。你的类可以实现多个接口,所以implements关键字后面是一个由类实现的接口的逗号分隔列表。按照惯例,implements子句紧跟着extends子句,如果有的话。一个简单的接口,Relatable考虑使用一个接口来定义如何比较对象的大小。public interface Relatable { // this翻译 2017-06-26 08:27:56 · 425 阅读 · 7 评论 -
javaSE_8系列博客——Java语言的特性(五)--接口和继承(4)--使用接口作为类型
定义新接口时,您将定义新的引用数据类型。您可以在任何可以使用任何其他数据类型名称的地方使用接口名称。如果定义类型为一个接口的引用变量,则分配给它的任何对象必须是实现该接口的类的实例。 作为一个例子,这里是一个找到一对对象中最大对象的方法,对于从实现的类中实例化Relatable的任何对象。public Object findLargest(Object object1, Object object2翻译 2017-06-26 08:44:11 · 315 阅读 · 8 评论 -
JavaScript进阶设计模式系列——基础篇——闭包(1)--闭包和作用域
闭包在JavaScript中,它是一个初学者闻之色变的概念,但它又是一个我们进阶JavaScript中必须要克服的一个概念。其实,话说回来,也没有辣么难。它和两个基本概念有关系。首先,咱们来看看JavaScript重的作用域和生命周期。作用域和闭包作用域:指变量的作用范围在JavaScript中,我们通常使用var 来声明和定义一个变量。在一个函数中,如果咱们不使用var 声明变量,那么这个变量就会原创 2017-06-26 16:02:01 · 436 阅读 · 7 评论 -
JavaScript进阶设计模式系列——基础篇——闭包(2)--闭包和生命周期
生命周期和闭包局部变量其生命周期,将会随着函数调用的结束而结束掉其生命,也就是内存被销毁。而全局变量则不会,它是永久存在的,除非我们主动销毁全局变量。但是试着看一下如下一段代码,你会发现一个很神奇的事情!局部变量a 竟然没有被销毁!var func = function(){ var a = 1; return function(){ a ++ ; c原创 2017-06-26 16:03:15 · 1294 阅读 · 6 评论 -
JavaScript进阶设计模式系列——基础篇——闭包(3)--闭包的作用
闭包的作用通常咱们使用闭包,有两种场景。一是封装变量。二是延续局部变量的寿命。封装变量我们来看一段封装前的一端代码,用来实现乘法的一个函数。封装前var cache = {};var mult = function () { var args = Array.prototype.join.call(arguments,','); if(cache[args]){ re原创 2017-06-26 16:47:50 · 488 阅读 · 6 评论 -
JavaSE_8系列博客——Java语言的特性(五)--接口和继承(5)--深入理解,并优化接口
考虑一个你开发的接口叫做DoIt:public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s);}假设在以后的时候,你要添加第三种方法到DoIt,这样接口现在变成:public interface DoIt { void doSomething(int i, doub翻译 2017-06-26 09:02:18 · 361 阅读 · 9 评论 -
javaSE_8系列博客——集合——宏观概述
本节介绍Java Collections Framework。在这里,您将了解什么是集合,以及如何使您的工作更容易,程序更好。您将了解构成Java Collections Framework的核心元素 - 接口,实现,聚合操作和算法。简介告诉你什么是的集合,以及如何使你的工作更容易,程序更好。您将了解组合框架的核心元素:接口,实现和算法。接口描述了核心的集合的接口,这是Java Collection翻译 2017-06-26 20:17:35 · 321 阅读 · 8 评论 -
javaSE_8系列博客——重要的基础Java类——Excavations(异常处理机制)--2--什么是异常?
术语Excavation是短语“exceptional event”的缩写。定义:一个异常是在执行程序期间发生的一个事件,它破坏程序指令的正常流程。当方法中发生错误时,该方法将创建一个对象并将其移交给运行时系统。称为异常对象 exception object,该对象包含有关错误的信息,包括错误发生时的类型和程序状态。创建异常对象并将其传递给运行时系统的行为,称为抛出异常。 一个方法抛出异常后,运行翻译 2017-07-04 16:11:50 · 457 阅读 · 5 评论 -
javaSE_8系列博客——重要的基础Java类——Excavations(异常处理机制)--1--宏观把控
引言:异常处理篇章,用来解释异常机制,以及如何用于处理错误和其他异常情况。本系列介绍了异常,如何抛出异常和捕获异常,捕获异常时如何处理异常,以及如何使用异常类层次结构。什么是异常一个异常,是在程序执行期间发生的一个事件,它破坏了正常的程序指令流程。捕捉异常或指定要求本节介绍如何捕获和处理异常。讨论包括try,catch和finally块,以及链接的异常和日志记录。如何抛出异常本节涵盖了throw语句翻译 2017-07-04 15:36:55 · 337 阅读 · 5 评论 -
JavaScript进阶设计模式系列——基础篇——this-call-apply
this在JavaScript的世界中,this是一个很让人挠头的概念,为什么呢?第一,它总是指向一个对象,使用起来可以简化代码。第二,它是基于函数的执行环境进行动态绑定的,而不是在函数被声明时的环境被指定。this的指向作为对象的方法被调用此时,this指向该对象。如代码所示:var obj = { a:1, getA:function(){ console.log原创 2017-06-25 10:26:10 · 583 阅读 · 9 评论 -
javaSE_8系列博客——Java语言的特性(三)--类和对象(12)--使用this关键字
在实例方法或构造函数中,这是对当前对象的引用,该对象的方法或构造函数被调用。您可以使用this方法从实例方法或构造函数中引用当前对象的任何成员。this关键字和字段:使用this关键字的最常见原因是因为字段被方法或构造函数参数遮蔽。例如,Point类是可以这样写的:public class Point { public int x = 0; public int y = 0;原创 2017-05-09 14:53:09 · 499 阅读 · 6 评论 -
javaSE_8系列博客——Java语言的特性(三)--类和对象(12)--类成员的访问控制
访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。有两个级别的访问控制:在最高级别(类的级别) - public或包private(没有显式修饰符)。在成员级别,public,private,protected或package-private(没有显式修饰符)。可以使用修饰符public声明一个类,在这种情况下,该类对所有类都可见。如果一个类没有修饰符(默认值,也称为package-翻译 2017-05-10 10:14:51 · 544 阅读 · 4 评论 -
javaSE_8系列博客——Java语言的特性(四)--注解--(5)-- 如何使用自定义的注解?
原文的链接地址:https://www.mkyong.com/java/java-custom-annotations-example/在本教程中,我们将向您展示如何创建两个自定义注释@Test和@TestInfo来模拟一个简单的单元测试框架。这个单元测试例子是受到这个官方Java注释文章的启发。1、@Test Annotation2、@TesterInfo Annot翻译 2017-05-19 09:00:57 · 513 阅读 · 6 评论 -
javaSE_8系列博客——Java语言的特性(四)--注解--(4)-- 类型注解和可插拔类型系统
在Java SE 8发布之前,注解只能应用于声明。从Java SE 8版本开始,注解也可以应用于任何类型的使用。这意味着注解可以在您使用类型的任何位置使用。使用类型的几个示例是类实例创建表达式(new),casts,implements clauses和throws子句。这种注解形式称为类型注解,并在注解基础中提供了几个示例。创建类型注解,以支持改进Java程序分析方式,确保更强大的类型检查。翻译 2017-05-19 09:21:45 · 1198 阅读 · 6 评论 -
javaSE_8系列博客——Java语言的特性(四)--注解--(3)-- 预定义注解
一组注释类型是在Java SE API中预定义的。一些注释类型由Java编译器使用,一些注释类型也适用于其他注释Java语言使用的注释类型预定义的注释类型定义在 java.lang 这个包中,他们是:@Deprecated, @Override, and @SuppressWarnings等……@Deprecated 注释表示标记的元素已被弃用,不应再使用。翻译 2017-05-19 09:25:46 · 580 阅读 · 5 评论 -
javaSE_8系列博客——Java语言的特性(三)--类和对象(20)--嵌套类(Lambda 表达式--VS--方法引用)
回顾上节的Lambda表达式的内容:您已经学会了使用lambda表达式创建匿名方法。然而,有时,lambda表达式只是调用现有方法。在这些情况下,通过名称引用现有方法往往更加清楚。方法引用使您能够做到这一点 ; 对于已经有名称的方法,它们是紧凑的,易于阅读的lambda表达式。再次考虑Lambda表达式中讨论的Person类:public class Person { public enum翻译 2017-06-17 10:58:15 · 537 阅读 · 4 评论 -
javaSE_8系列博客——Java语言的特性(三)--类和对象(19)--嵌套类(Lambda 表达式)
匿名类的一个问题是,如果您的匿名类的实现非常简单,例如仅包含一个方法的接口,则匿名类的语法可能看起来很笨重且不清楚。在这些情况下,您通常会尝试将function作为参数传递给另一种方法,例如当有人点击按钮时应该采取什么措施。 Lambda表达式使您能够执行此操作,将function视为方法参数或代码作为数据。 上一节“匿名类”介绍如何实现基类而不给它一个名称。虽然这通常比命名类更简洁,对于只有一种方翻译 2017-06-06 11:32:17 · 576 阅读 · 8 评论 -
javaSE_8系列博客——Java语言的特性(三)--类和对象(21)--何时使用Lambda 表达式?
如“嵌套类”一节所述,嵌套类使您能够逻辑地对仅在一个地方使用的类进行分组,提高程序的封装性,并创建更易读和可维护的代码。局部(本地)类,匿名类和lambda表达式都具备了这些优点 ; 但是,它们各自有更具体的情况使用场景:局部(本地)类:如果您需要创建一个类的多个实例,访问其构造函数或引入新的命名类型(例如,以后需要调用其他方法),请使用它匿名类:如果需要声明字段或其他方法,请使用它。Lamb翻译 2017-06-17 15:45:35 · 464 阅读 · 4 评论 -
JavaScript进阶设计模式系列——基础篇——高阶函数
定义:是指满足下列条件之一的函数:函数可作为参数被传递函数可作为返回值输出详情参见维基百科定义:应用场景作为参数传递回调函数其实,从本质上来讲:回调函数和委托是一回事儿。当一个函数不适合执行一些请求的时候,我们把这些请求封装成一个函数,并把它作为参数传递给另外一个函数,委托其他的函数来执行。在Ajax的使用过程中,回调函数使用非常频繁。我们想要在Ajax请求完成后,执行一些操作,但是有不知道返原创 2017-07-04 11:43:59 · 422 阅读 · 6 评论 -
JavaSE_8系列博客——Java语言的特性(五)--接口和继承(6)--默认方法的使用场景
为什么实用默认方法?场景如下本章节:描述了一个例子,涉及计算机控制汽车的制造商,他们发布行业标准接口,描述哪些方法可以被调用来操作他们的汽车。如果这些电脑控制的汽车制造商将新的功能(如飞行)添加到他们的汽车怎么办?这些制造商将需要指定新的方法,使其他公司(如电子指导仪器制造商)能够使其软件适应飞行汽车。这些汽车制造商会在哪里申报这些新的与飞行有关的方法?如果将它们添加到原始接口,那么实现这些接口的程翻译 2017-06-27 08:48:08 · 750 阅读 · 7 评论 -
JavaScript进阶设计模式系列——基础篇——闭包(4)--闭包和面向对象的设计
引言:在面向对象的世界中,过程和数据是一个经常被使用的表达方式。对象,通过方法的形式包含着过程,而闭包则是在过程中以环境的形式包含了数据,因此,只要是用面向对象思想实现的东西,基本上用闭包的思想也能实现。下面,咱们看一则实例,分别使用面向对象形式来实现的写法和使用闭包形式的写法。面向对象的写法传统写法之一: var cat = { name : 'mimi',原创 2017-06-27 09:30:35 · 432 阅读 · 8 评论 -
Java远程调用系列(一)——概览篇
首先,来几个基本问题远程调用是什么?内涵本质上来讲, 通俗来讲,外延(易混概念)为什么需要远程调用?必要性意义,带来的好处是什么?怎么实现远程调用?实现原理实现方式如何选型?技术发展趋势当下流行程度技术的学习成本公司现有架构和未来架构方向.NET平台下的远程调用(扩展)原创 2017-10-24 15:31:12 · 995 阅读 · 10 评论 -
JavaSE_8系列博客——专家之路(一)---Java反射的总结
先来五个基本问题:什么是反射(what)?生活中的反射百科定义:反射(外文名reflection),指的是声波、光波或其他电磁波遇到别的媒质分界面而部分仍在原物质中传播的现象。如光的反射、波的反射。光在两种物质分界面上改变传播方向又返回原来物质中的现象,叫做光的反射程序设计语言中的反射百科定义:反射是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对原创 2017-10-22 08:17:18 · 2662 阅读 · 12 评论 -
Java专家之路(二)---数据访问和数据持久化框架的总结
Java数据访问和持久化SQL方案一JDBC什么是JDBC架构图JDBC规范下载链接JAVA使用JDBC访问数据库的步骤实例练习方案二JdbcTemplatejdbcTemplate是什么应用场景实例操作方案三ORMORM是什么为什么需要ORM主要是解决jdbc的各种问题ORM的优势ORM带来了什么样的问题ORM是否非得使用ORM的实现原理思路有哪些ORM方案可原创 2017-12-20 17:51:03 · 10952 阅读 · 10 评论 -
Java专家之路(七)-- 面向对象的基础概念,如何理解继承?
什么是继承?定义:内涵:外延:从生活的角度从编程的层面从java的层面java语法层面从虚拟机的层面字节码层面从机器语言层面为什么需要继承?复用,纵向的复用。怎样才是打开java继承的正确姿态?继承的代码示例:如何科学、正确地使用继承常见的反例继承的最佳实践如何解决java中单继承带来的限制?java中继承的实现原理...原创 2019-01-12 17:18:42 · 272 阅读 · 0 评论 -
Java专家之路(七)-- 面向对象的基础概念,如何理解多态?
是什么?为什么?怎么做到?示例:原理分析从虚拟机层面从字节码层面多态的滥用(常见误区)最佳实践原创 2019-01-12 17:21:06 · 175 阅读 · 0 评论 -
Java专家之路(九)-- 面向对象的基础概念和原理,使用回调机制实现对象之间通信
定义:什么是通信什么是对象?哪些对象的通信通信的实现方式原创 2019-01-12 17:23:28 · 854 阅读 · 0 评论 -
编程思想和原则之——《Don’t Repeat Yourself (DRY)》附参考代码
设计层面代码层面clean code重构代码坏味道好代码小结原创 2019-01-12 17:31:58 · 662 阅读 · 0 评论 -
编程思想和原则之——《插件式编程》附参考代码
什么是插件?参考方案:设计参考代码实现原创 2019-01-12 17:33:22 · 561 阅读 · 1 评论 -
编程思想和原则之——《Design by Contract (DbC) – 契约式设计》附参考代码
什么是契约式编程体现?代码参考:原创 2019-01-12 17:37:11 · 786 阅读 · 1 评论 -
JavaSE_8系列博客——Java8的新特性(一)--Lambda表达式(1)--宏观把控
Why Lambda 表达式什么是Lambda内涵外延相关的易混概念函数式编程和Lambda高阶函数和Lambda匿名函数和Lambda闭包和Lambda内部类匿名类匿名内部类局部类和LambdaJavaScript中的回调函数和Lambdac中的委托和Java中的LambdaLambda和流式Stream编程的关系Java的stream和C中的LINQLambda表达式和原创 2017-09-30 07:12:03 · 1032 阅读 · 3 评论 -
javaSE_8系列博客——重要的基础Java类——Exceptions(异常处理机制)--4--总结
引言:异常处理已经成为判断一门编程语言是否成熟的标准,它可以使得异常处理代码和业务逻辑代码分离,保证程序更加优雅,提高程序的容错性,使其更加健壮。 下面咱们一起总结下,在Java中关于异常的知识体系。咱们从几个基本问题开始什么是异常?定义:一个异常,是在程序执行期间发生的一个事件,它破坏了正常的程序指令流程。分类Runtimechecked指导原则:如果客户端可以合理地预期从异常中恢复,请将其作为原创 2017-09-21 16:51:50 · 539 阅读 · 2 评论 -
JavaSE_8系列博客——Java语言的特性(六)--泛型(5)--泛型的使用
JDK类库中泛型的使用集合类到目前为止,Java 类库中泛型支持存在最多的地方就是集合框架。就像容器类是 C++ 语言中模板的主要动机一样(参阅 附录 A:与 C++ 模板的比较)(尽管它们随后用于很多别的用途),改善集合类的类型安全是 Java 语言中泛型的主要动机。集合类也充当如何使用泛型的模型,因为它们演示了泛型的几乎所有的标准技巧和方言。所有的标准集合接口都是泛型化的 其他容器类除了集合原创 2017-09-23 10:09:20 · 596 阅读 · 4 评论 -
javaSE_8系列博客——重要的基础Java类——多线程--1--宏观把控
引言:计算机用户认为他们的系统一次可以做一件以上的事情。他们假设他们可以继续在文字处理器中工作,而其他应用程序下载文件,管理打印队列和流音频。通常,单个应用程序通常也会一次做一件事情。例如,流式音频应用程序必须同时从网络读取数字音频,解压缩,管理播放和更新其显示。即使文字处理器也应该随时准备好响应键盘和鼠标事件,无论重新格式化文本或更新显示器多么忙碌。可以做这些事情的软件被称为并发软件。 Java平翻译 2017-07-06 09:16:27 · 435 阅读 · 8 评论 -
JavaScript进阶设计模式系列——基础篇——闭包(5)--命令模式的两种实现方式
在面向对象的世界中,过程和数据是一个经常被使用的表达方式。对象,通过方法的形式包含着过程,而闭包则是在过程中以环境的形式包含了数据,因此,只要是用面向对象思想实现的东西,基本上用闭包的思想也能实现。下面,咱们看一则实例,分别使用面向对象形式来实现的写法和使用闭包形式的写法。面向对象的写法<!DOCTYPE html><html lang="en"><head> <meta charset原创 2017-06-27 14:56:29 · 522 阅读 · 8 评论 -
javaSE_8系列博客——集合——简介部分
集合(有时称为容器)仅仅是将多个元素组合成一个单元的对象。集合用于存储,检索,操纵和传达聚合数据。通常,它们表示形成自然组的数据项,例如扑克牌(卡片集合),邮件文件夹(字母集合)或电话簿(名称与电话号码的映射)。如果您使用Java编程语言 - 或任何其他编程语言,您已经熟悉了集合。什么是集合框架?集合框架是用于表示和操作集合的统一架构。所有集合框架包含以下内容:接口:这些是表示集合的抽象数据类型。翻译 2017-06-28 08:37:55 · 335 阅读 · 6 评论 -
翻转设计模式系列——第一部分--面向对象基础知识(1)--概览
面向对象:当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。 参考博客:《门卫和面向对象》类和对象类(Class):定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作 对象:是类的实例。构造方法构造器(英语: Constructor;别称:构造方法、构造函数、建构子)是一个类里用于建立对象的特殊子程序。它能初始化一个新建的对象,并时常会接受参数用原创 2017-05-02 14:45:37 · 640 阅读 · 9 评论