![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面向对象
文章平均质量分 86
LinkinPark8林肯
博客迁移,请移步jiangweili.me
展开
-
面向对象--内部类
理解内部类大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类被称为内部类,包含内部类的类也被称为外部类。内部类主要有如下作用:1),内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。2),内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间原创 2014-11-05 14:56:40 · 603 阅读 · 0 评论 -
面向对象--属性
在Java语言中,根据定义变量位置的不同,可以将变量分为两大类,成员变量和局部变量。按照我自己的习惯,我一般喊成员变量叫属性,局部变量叫局部变量。属性值的是在类里定义的变量,局部变量指的是在方法里定义的变量。不管是成员变量还是局部变量,都应该遵守相同的命名规则,从语法的角度来看,只要是一个合法的标识符即可,但是从程序可读性角度来看,应该是多个有意义的单词连缀而成,按照驼峰规则来命名。原创 2014-10-24 10:48:59 · 1677 阅读 · 0 评论 -
面向对象--接口
抽象类是从多个类中抽象出来的模板,若要将这种抽象进行得更彻底,则可以提炼出一种更加特殊的抽象类,也就是接口,接口里不能包含普通方法,接口里的所有方法都是抽象方法。Java8中对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现。这篇博客针对Java8之前的版本,关于Java8所有的改进我会后面相关分类中统一来整理。接口的概念生活中听说过的USB接口其实并不是原创 2014-11-02 19:35:36 · 854 阅读 · 0 评论 -
面向对象--抽象类
当编写一个类时,常常会为该类定义了一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体。但在某些情况下,某个父类只是知道子类应该包含怎样的方法,但无法准确的知道这些子类如何实现这些方法。举一个例子,所有的图形都有求面积的方法,不管你是正方形,矩形,圆形无所谓,他们都是图形,所以我们应该抽象成图形这个父类。1),第一种做法,我们把求面积的方法作为每一个子类的自己的方法,原创 2014-10-31 01:17:06 · 606 阅读 · 0 评论 -
面向对象--方法
方法是类或对象的行为特征的抽象,方法是类或对象最重要的组成部分。从功能上看,方法完全类似于传统结构化程序设计里的函数,值得指出的是,Java里的方法不能独立存在,所有的方法都必须定义来类里。方法在逻辑上要么属于类,要么属于对象。方法的所属性方法确实是由传统的函数发展而来的,方法和传统的函数有着显著不同:1),在结构化编程语言里,函数是一等公民,整个软件由一个个的函数组成原创 2014-10-22 16:21:49 · 551 阅读 · 0 评论 -
面向对象--类和对象
Java是面向对象的程序设计语言,类是面向对象的重要内容,可以把类当成一种自定义类型,也可以使用类来定义变量,这种类型的变量统称为引用变量。一定要记住:所有类都是引用变量。定义类面向对象的程序设计过程中有两个重要概念,类和对象,其中类是某一批对象的抽象,可以把类理解成某种概念,对象才是一个具体存在的实体。定义一个类是为了重复创建该类的实例,同一个类的多个实例具有共同的特征,原创 2014-10-20 00:31:00 · 555 阅读 · 0 评论 -
不可变类
先来科普2个概念,可变类和不可变类。1),不可变类的意思就是创建该类的实例后,该实例的实例变量是不可改变的。Java提供的8个包装类和String类都是不可变类,当创建他们的实例后,其实例的实例变量是不可改变的。2),与不可变类对应的是可变类,可变类的含义是该类的实例变量是可变的。大部分时候所创建的类都是可变类,特别是JavaBean,因为总是在其实例变量提供了setter和get原创 2016-05-25 14:56:52 · 1253 阅读 · 0 评论 -
如何使用 volatile, synchronized, final 进行线程间通信
原文地址:https://segmentfault.com/a/1190000004487149。感谢作者的无私分享。你是否真正理解并会用volatile, synchronized, final进行线程间通信呢,如果你不能回答下面的几个问题,那就说明你并没有真正的理解:对volatile变量的操作一定具有原子性吗?synchronized所谓的加锁,锁住的是什么?转载 2016-02-26 11:19:38 · 1559 阅读 · 0 评论 -
面向对象--封装
软件开发追求的境界:高内聚,低耦合。高内聚:尽可能把模块的内部数据,功能实现细节隐藏在模块内部独立完成,不允许外部直接干预低耦合:仅暴露少量的方法给外部使用封装是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,通过该类所提供的方法来实现对内部信息的操作和访问。理解封装对一个类或对象实现良好的封装,可以实现以下目的:原创 2014-10-27 23:23:26 · 587 阅读 · 0 评论 -
面向对象--包和导入
packageOracle公司的JDK,各种系统软件厂商,众多的软件开发商,他们会提供成千上万,具有各种用途的类,不同软件公司在开发过程中也要提供大量的类,这些类会不会发生同名的情形呢?答案是肯定的。那么如何处理这种重名问题呢?Oracle也允许在类名前增加一个前缀来限定这个类。Java引入了包机制,提供了类的多层命名空间,用于解决类的命名冲突,类文件管理等问题。Java允许将一组原创 2014-10-28 00:33:08 · 941 阅读 · 0 评论 -
面向对象--初始化块
理解初始化块Java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整。与构造器作用非常类似的是初始化块,它也可以对Java对象进行初始化操作。初始化块是Java类里可出现的第四种成员,除了初始化块还有属性,方法,构造器。一个类可以有多个初始化块,相同类型的初始化之间有顺序,前面定义原创 2014-10-28 23:36:32 · 873 阅读 · 0 评论 -
面向对象--组合
继承是实现类重用的重要手段,但是它有一个最大的坏处:破坏封装。相比之下,组合也是实现类重用的重要方式,采用组合方式实现类重用则能提供更好的封装性。使用继承子类扩展父类,子类可以从父类继承到属性和方法,如果访问权限允许,子类可以直接访问父类的属性和方法,相当于子类可以直接服用父类的属性和方法,确实非常方便。继承带来了高度复用的同时,也带来了一个严重的问题,继承严重的破坏了父类原创 2014-10-28 23:07:20 · 1045 阅读 · 0 评论 -
面向对象--继承
继承是面向对象的三大特征之一,也是实现软件复用的重要手段。Java的继承具有单继承的特点,每个子类只有一个直接父类。理解继承Java中子类继承父类的语法:[修饰符] class SubClass extends SuperClass { // 类定义部分 }按照这种关系,我们把SuperClass类称为父类,把SubClass称为子类。因为父类包含的范围总比子类原创 2014-10-28 08:24:30 · 625 阅读 · 0 评论 -
面向对象--构造器
构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。构造器是创建对象的重要途径,即使使用工厂模式,反射等方式创建对象,其实质依然是依赖于构造器,因此,java类必须包含一个或者一个以上的构造器。使用构造器执行初始化构造器最大的用处就是在创建对象时执行初始化。当创建一个对象时,系统为这个对象的实例对象进行默认初始化,这种默认的初始化把所有基本类型的实例变量设置为0(原创 2014-10-28 08:08:49 · 803 阅读 · 0 评论 -
Java常用包
Java常用包Java的核心类都放在Java包以及其子包下,Java扩展的许多类都放在Javax包以及其子包下。这些实用类也就是前面所说的API,Oracle按这些类的功能分别放在不同的包下。下面几个包是Java语言中的常用包:1),java.lang:Java语言的核心类,如String,Math,System和Thread类等,使用这个包下的类无须使用import语句导入,系统原创 2016-05-16 10:33:23 · 3257 阅读 · 0 评论 -
面向对象--包装类
Java是面向对象的编程语言,但它也包含了8种基本数据类型,这8种基本数据类型不支持面向对象的编程机制,基本数据类型的数据也不具备对象的特性,没有属性和方法可以被调用。为了解决8种基本数据类型的变量不能当成Object类型变量使用的问题,Java提供了包装类的概念,为8种基本数据类型分别定义了相应的引用类型,并称之为基本数据类型的包装类。这篇博客我将详细的整理一下Java中的包装类。原创 2014-10-30 00:15:23 · 734 阅读 · 0 评论 -
面向对象--枚举
在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,比如行星类,目前也只有8个对象。这种实例有限而且固定的类,在Java里被称为枚举类。手动实现枚举类在早期的代码中,可能会直接使用简单的静态常量来表示枚举,比如下面的代码:public class LinkinPark{ // 定义几个静态常量来表示季节 public static final int原创 2014-11-03 10:49:08 · 772 阅读 · 1 评论 -
深入探讨 Java 类加载器
原文出处:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/#code1感谢作者,感谢ibm论坛,里面有好多精华的帖子。类加载器(class loader)是 Java™中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念转载 2016-03-03 00:53:38 · 540 阅读 · 0 评论 -
类加载机制
JVM和类的关系当我们通过java指令来运行某个java从程序时,该命令将启动一个java虚拟机进程。不管程序有多么复杂,不管启动了多少个线程,他们都处于java的虚拟机中。值得注意的是:2次运行java程序处于2个不同的JVM进程中,2个JVM之间并不会共享数据。比如我2次运行一个程序来修改一个类的一个静态属性,彼此之间是没有关系的。类加载和类初始化其实上面的2个名词原创 2014-12-11 23:26:00 · 565 阅读 · 0 评论 -
JDK动态代理
在java的java.lang.reflect包下面提供了一个Proxy类和一个invocationHander接口,通过这个类和接口就可以生成JDK动态代理类和动态代理对象。首先来看一下Proxy类,Proxy 提供用于创建动态代理类和代理对象的静态方法, 它也是所有动态代理类的父类。它只有一个构造方法: Proxy 提供了两个方法来创建动态代理类和动态代理实例:原创 2014-12-15 00:47:54 · 424 阅读 · 0 评论 -
反射
为什么要学习反射?首先说一点:反射是比较低级的一个知识,如果是单纯的撸码来是实现功能的话,反射基本用不到,而且反射的性能呢也肯定不怎么好的,但是我个人觉得反射是一个很重要的知识点,在我老早学习的时候就是这么认为的,主要的原因有2点:1,java的编译和运行。java是强类型语言,运行java每一个对象都会出现2个种类型:编译时类型和运行时类型,好多的知识点都只是关于编译时类型的,比如说原创 2014-12-13 13:46:25 · 652 阅读 · 0 评论 -
javabean内省
何为JavaBean?JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。 用户可以使用JavaBean将功能、处理、值、数据库访问和其他任原创 2014-12-21 16:07:31 · 736 阅读 · 0 评论 -
java注解--Annotation
Annotation(注释) 概述从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注释)Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。Annotati原创 2014-11-27 13:25:22 · 556 阅读 · 0 评论 -
linkin大话面向对象--GC和jar包
java的垃圾回机制是java语言的重要机制之一。当程序创建对象,数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区中。当这块内存不再被任何变量引用时,这块内存就变成了垃圾,等待系统自动回收。一个对象在堆内存中运行,一共有3中状态:激活状态,去活状态,死亡状态。值得注意的是:1,垃圾回收机制只负责回收堆内存中的对象,不会回收任何的物理资源(比如数据库原创 2014-11-06 02:03:17 · 496 阅读 · 0 评论 -
linkin大话面向对象--闭包和回调
先来理解2个概念:闭包和回调 什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域。通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信息,还自动拥有一个指向外部类对象的引用,在此作用域里,内部类有权操作所有的成员,包括外部类的private修饰的成员。 什么是回调? 回调就是对象携带一些信息,这些信息允许原创 2014-11-05 23:58:01 · 504 阅读 · 0 评论 -
反射应用--IOC和AOP
反射最大的价值就是用来写框架,下面贴出自己的3篇代码,模拟实现SPING框架的bean工厂,IOC,AOP。当然这里重点是在利用反射实现功能,为了图方便,我用的是Properties文件,关于XML后面会有专门的博客来整理,到时候整合相关的解析XML的代码就可以了。1,通过反射,读取配置文件来管理beanpackage linkin;import java.io.FileInputSt原创 2014-12-15 01:28:46 · 1319 阅读 · 0 评论 -
transient关键字
今天在看JDK的一些源码的时候,发现有一个关键字transient自己没怎么玩过。所以这里写此博客来整理下这个关键字的用法。去万能的百度上找资料,百度百科上是这么说的:Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serializ原创 2016-01-06 14:15:37 · 457 阅读 · 0 评论 -
static class 静态类
原文出处:http://blog.sina.com.cn/s/blog_605f5b4f0100zbps.html。感谢作者分享。一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定转载 2016-01-23 10:32:32 · 940 阅读 · 0 评论 -
java性能优化
无意中电脑中翻出下面文章,读了一遍,觉得写得挺深刻的。在这里贴出来,方便大家阅读。Java在九十年代中期出现以后,在赢得赞叹的同时,也引来了一些批评。赢得的赞叹主要是Java的跨平台的操作性,即所谓的”Write Once,Run Anywhere”.但由于Java的性能和运行效率同C相比,仍然有很大的差距,从而引来了很多的批评。 对于服务器端的应用程序,由于不大涉及到界面设计和程序的频繁重启转载 2014-12-22 17:22:33 · 662 阅读 · 0 评论 -
Integer源码解析
这篇博客我来整理下以Integer为例整理下包装类的源码。首先来看一段代码:public class LinkinPark{ public static void main(String[] args) { Integer a = 1; Integer b = 1; // 下行代码输出true System.out.println(a == b); Integer原创 2016-05-22 16:55:40 · 3050 阅读 · 0 评论