linkin大话面向对象--继承】的更多相关文章

[修饰符] class SubClass extends SuperClass    按照这种关系,我们把SuperClass类称为父类或基类,把SubClass称为子类或派生类或拓展类.extends在英语中是扩展的意思,而不是继承.这 个关键字很好的体现了子类和父类的关系:子类是对父类的扩展,子类是一种特殊的父类.子类扩展了父类,将可以获得父类中所有的属性和方法,但是特别注意的是:java中的子类不能获得父类的构造 器.java.lang.Object是所有类的父类,Object要么是直接父…
  先来理解2个概念:闭包和回调   什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信息,还自动拥有一个指向外部类对象的引用,在此作用域里,内部类有权操作所有的成员,包括外部类的private修饰的成员.   什么是回调? 回调就是对象携带一些信息,这些信息允许它在稍后的某个时刻调用初始化的对象.说白了就是说:某个方法一旦获得了内部类对象的引用,就可以在合适的时候反过来调用外部类实例…
java引用变量有2个类型,一个是编译时类型,一个是运行时类型: 编译时类型:声明的类型,把它看做是什么东西 运行时类型:真正的类型,实际上指的是什么东西 如果编译时类型和运行时类型不同,就出现多态.相同类型的变量,调用同一个方法时呈现出多种不同的行为特征,这就是多态. 注意这个定义里面的关键字:方法.和方法不同,对象的属性不具备多态性. 编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定.记住下面一句话就好:编译决定类型,运行绑定对象 当一个引用类型的变量若声明为父…
我们每天在撸码,那么我们在敲什么东西呢?明显的我们在写类,写一个类,写一个接口,写某个接口里面写一些属性,在某个类里面写一个方法,然后以一个对象调用方法,对于j2ee来讲的话,可能还会写一些jsp,静态的html,还有不可避免的被大家一直诟病的xml配置文件.具体的java语言规范,以后我会专门做整理,在这里我只关注java面向对象. 要说面向对象,核心就是两个东西:类和对象 . 那么什么是类?自定义数据类型,类是某一批对象的抽象,所有的类都是引用数据类型. 什么是对象?具体存在的实体 . 2者…
内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. 2,内部类可以访问外部类的私有数据,外部类不能访问内部类的实现细节,比如字段. 3,匿名内部类适合用于那些仅需要一次使用的类.比如在命令模式中,当需要传入一个Command对象时,使用匿名内部类将更加方便. 内部类分类,主要有下面4种: 非静态内部类:静态内部类:局部内部类:匿名内部类 非静态内部类…
枚举类(enum) 其实我们使用到枚举的地方还是很多的,其实我们可以完全人工的来实现枚举的功能.比如说我现在手里的项目我就是自己实现的枚举,说白了,枚举就是一个类的多例模式. 1,使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类: 2,枚举类的对象是固定的,实例个数有限,枚举对象后可以跟():跟着()的意思就是在调用相关的构造器,要是不写的话就是在调用默认的构造器. 3,枚举元素必须位于枚举类体中的最开始部分,枚举元素后要有分号与其他成员分隔: 4,枚举类的构…
java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract  default  null  synchronized  boolean  do  if  package  this  break  double  implements  private  threadsafe  byte  else  import  protected  throw  extends  instanceof    case  fa…
继承是实现类重用的重要手段,但是它有一个最大的坏处:破坏封装.相比之下,组合也是实现类重用的重要方式,但是采用组合方式实现类重用则能提供更好的封装性.比如人有手一样,在人的类中增加一个手的属性. 何时使用继承呢: 1,子类需要增加额外的属性,不仅仅是属性值的改变 2,子类需要增加自己独有的行为方式 为了保证父类有良好的封装性,不会被子类随意改变,设计父类通常应该遵循以下规则: 1,尽量隐藏父类的内部数据.尽量把父类的所有属性都设置成private访问类型,不要让子类直接访问父类的属性 2,不要让…
GC java的垃圾回机制是java语言的重要机制之一.当程序创建对象,数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区中.当这块内存不再被任何变量引用时,这块内存就变成了垃圾,等待系统自动回收.一个对象在堆内存中运行,一共有3中状态:激活状态,去活状态,死亡状态. 值得注意的是:1,垃圾回收机制只负责回收堆内存中的对象,不会回收任何的物理资源(比如数据库连接) 2,程序无法精确的控制垃圾回收的运行,垃圾回收总是在合适的时候来进行. 3,垃圾回收机制在回收任何对…
接口(interface)的概念,掌握接口很重要,以后所有的编程都要面向接口编程.其实接口的内涵就7个字:规范和实现分离. 抽象类是从多个类中抽象出来的模板,若要将这种抽象进行得更彻底,就得用到一种特殊的"抽象类":接口. 生活中听说过的USB接口其实并不是我们所看到的那些插槽,而是那些插槽所遵循的一种规范;而我们看到的那些插槽是根据USB规范设计出来的实例而已,也就说插槽是USB的实例;对应不同型号的USB设备而言,他们各自的USB插槽都需要遵循一个规范,遵守这个规范就可以保证插入插…
Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢? 基本数据类型 包装类 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean 除了Integer和Character定义的名称和对应的基本类型差异大,其他六种都是将首字母大写就可以了. Integer,Byte,Float,Doubl…
java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整.与构造器作用非常类似的是初始化块,它也可以对java对象进行初始化操作. 初始化块是构造器的补充,初始化块总是在构造器执行之前执行. 初始化块的基本用法:如果有一段初始化处理代码对所有的对象完全相同,且无需接受任何参数,就可以把这段代码提取到初始化块中. 如果初始化块使用了static修饰,就变成了类初始化块.类初始化块总是比普通初始化先…
   对象的产生格式:类名称  对象名 = new  类名称(); 因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法.如:CellPhone cp = new CellPhone(); 构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化.构造器是创建对象的重要途径,即使使用工厂模式,反射等方式创建对象,其实质依然是依赖于构造器,因此,java类必须包含一个或者一个以上的构造器.一旦自己显示的写了构造方法,那么java就不再为我们提供那个隐式的无参构造方法了. 特点:…
我们现在的代码都扔在一个文件夹里面,比如以后我们做项目,是不是有可能有非常非常多的代码,那我就希望把不同功能和模块的类方便管理,放到不同的文件夹下,引出包概念. 什么是包,就一个文件目录,为了处理重名问题,解决类的命名冲突,类文件管理等问题.包名的书写:全用小写字母,避免使用与系统发生冲突的名字,如不能定义java.lang.java.swing等.java规定,位于包中的类,在文件系统中也必须有与包名层次相同的目录结构.很多初学者以为只要把生成的class文件放在某个目录下,这个目录名就成了这…
软件开发追求的境界:高内聚,低耦合 高内聚:尽可能把模块的内部数据,功能实现细节隐藏在模块内部独立完成,不允许外部直接干预 低耦合:仅暴露少量的方法给外部使用 到底为什么要对一个雷或者对象实现良好的封装,可以实现以下目的: 1,隐藏类的实现细节 2,让使用者只能通过实现预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问 3,还可以进行数据检查,有利于保证对象信息的完整性 4,便于修改,提高代码的可维护性 为了实现良好的封装,需要从2个方面来考虑 1,把对象的属性和实现细…
成员变量和局部变量 成员变量: 1.在一个类中,任何方法之外定义的变量:     2.从面向对象的思想来说我们又把实例变量看成一个类的属性.     3.实例变量在没有符初值时系统会自动帮我们做初始化: 整型数据初始化为 0,布尔型数据初始化为 false,对象类型初始化为 null.    实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效. 局部变量: 1.在方法内定义的变量叫局部变量.     2.局部变量使用前必须初始化,系统不会自动给局部变量做初始化.     3.局部…
1,方法的参数传递机制:值传递. 首先弄懂2个概念:形参和实参. 形参(形式参数):相当于函数(Java中也把函数称之为方法)中的局部变量,在函数被调用时创建,并以传入的实参作为起始值,函数调用结束时被释放.不会影响主程序中其他的变量(即使有变量跟他们同名),因为他们是不同作用域的变量,互不干扰.实参:调用函数时,实际传给函数形式参数的数据. 不管是基本类型的参数传递,还是引用类型的参数传递,统统采用的是值传递方式.有点区别的是引用类型的参数传递,实际上传递的是一个引用.记住下面一句话,就可以很…
abstract [非private访问修饰符] 返回值类型 方法名称(参数列表); 当编写一个类时,我们往往会为该类定义一些方法,这些方法时用来描述该类的行为方式,那么这些方法都有具体的方法体. 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法. 比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样.那该怎么办呢? 所有的图形都有求面积的方法,不管你是正方形,矩形,圆形无所谓,他们都是图形,所以我们应该抽象一个图形这个父类.第一种做…
linkin大话设计模式--常用模式总结 一,常用设计模式定义 Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. Adapter(适配器模式):将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. Bridge(桥接模式):将抽象部分与它的实现部分分离,使它们都可以独立地变化. Builder(建造者模式):将一个复杂对象的构建与它的表示分离,使得同样的构建过…
linkin大话设计模式--适配器模式 大家知道,在java中只允许单继承,但是在实际问题中往往都需要多继承,java引入了接口这一概念.(一个类可以实现多个接口) 由于接口中都是抽象方法,那么我们在实现它的时候就必须全部覆写这些方法.假如我有一个类,这个类只想覆写一部份方法怎么办?   在接口与这个类中间可以加一个抽象类: 抽象类去覆写接口中的全部方法,而那个类去继承这个抽象类,根据需要覆写抽象类中的方法.(简单的适配器模式) 代码如下:   public class AbstractTest…
linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们为了不一直忙于定义子类,就可以使用桥接模式.桥接模式就是把变化部分抽象出来,使变化部分与主类部分分离开来,从而将多个维度的变化彻底分离.最后提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要. 代码如下: <span style="font-size:14px;"&g…
OC面向对象—继承 一.基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类. 继承的好处: (1)抽取出了重复的代码 (2)建立了类和类之间的联系 继承的缺点: 耦合性太强 二.OC中的继承 @interface Animal:NSObject //动物里继承了NSObject,获得NSObject类的方法: @en…
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>面向对象继承实例</title> <script type="text/javascript"> window.onload = function(){ function parent(age,name){ this.age = age; this.name = n…
前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2.字面量的方式 如果想要复用的话,可能会用到工厂方法 工厂方法每次都要创建对象 并返回 构造方法创建对象方法可以更简洁 然而构造方法用实现实例间共享共同的方法,比较麻烦 原型可以实现实例共享所有属性 每个函数都有指向原型对象的指针,如果将一个函数的原型属性赋值给另外函数的实例,函数的原型将指向另外一…
Php面向对象 – 继承和重写 承受: php于,通过类.使用特殊的经营宗旨. 通过定义类,采用extends来表示当前的类对象继承该类的对象. 样例: class C { public  $p_c =  "value c"; } class D extends C { public  $p_d = "value d"; } $o =  new D; var_dump($o->p_c) var_dump($o->p_d) 输出:string(7) &qu…
 Java面向对象   继承(下) 知识概要:               (1)抽象类 1.1 抽象类概述                            1.2 抽象类的特点                            1.3 抽象类举例代码讲解                            1.4 抽象类相关问题               (2)模板方法模式 2.1 模板设计模式的概念 2.2 模板设计模式的演示               (3)接口    …
   Java面向对象 继承 知识概要:         (1)继承的概述 (2)继承的特点 (3)super关键字 (4)函数覆盖 (5) 子类的实例化过程 (6) final关键字 (1)继承的概述 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行         为,只要继承单独的那个类即可. 多个类可以称为子类,单独这个类称为父类或者超类.     子类可以直接访问父类中的非私有的属性和行为.通过extends 关键字让类与类之间产生继承…
linkin大话设计模式 开文前先弱弱的问一句:什么是设计模式?我在研究java2ee的时候有研究过,在学js的时候也有看到.设计模式的概念最早源于建筑设计大师<建筑的永恒算法>一书,它表示一个特定的环境,一类问题和一个解决方案之间的关系.对于软件领域,设计模式就是对处于特定的环境下,经常出现的某类软件开发问题的,一种相对成熟的设计方案. 设计模式(Design pattern)是一套被反复使用,多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人…
linkin大话设计模式--建造模式 建造模式是对象的创建模式,可以讲一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 建造模式的结构: 抽象建造者角色(Builder):给出一个抽象的接口,用来规范产品对象的各个组成成分的建造. 具体建造者角色(ConcreteBuilder): 1.实现抽象建造者所申明的接口,给出一步一步地完成创建产品实例的操作. 2.在建造过程完成后,提供产品的实例. 导演者角色(Director):用来调用具体建造者以…
linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现.抽象模板角色: 1.定义了一个或多个抽象操作,以便让子类实现. 2.定义并实现了一个模板方法. 具体模板角色: 1.实现父类所定义的一个或多个抽象方法. 2.每一个抽象模板角色都可以有任意多个具体模板角色与之对应,而每一个具体模板角色都可以给出这些抽象方法的不同实现. 代码如下: //模板…