继承:重新使用接口

就其本身来说,对象的概念可为我们带来极大的便利。它在概念上允许我们将各式各样数据和功能封装到一起。这样便可恰当表达“问题空间”的概念,不用刻意遵照基础机器的表达方式。在程序设计语言中,这些概念则反映为具体的数据类型(使用class关键字)。我们费尽心思做出一种数据类型后,假如不得不又新建一种类型,令其实现大致相同的功能,那会是一件非常令人灰心的事情。但若能利用现成的数据类型,对其进行“克隆”,再根据情况进行添加和修改,情况就显得理想多了。“继承”正是针对这个目标而设计的。但继承并不完全等价于克隆。在继承过程中,若原始类(正式名称叫作基础类、超类或父类)发生了变化,修改过的“克隆”类(正式名称叫作继承类或者子类)也会反映出这种变化。在Java语言中,继承是通过extends关键字实现的使用继承时,相当于创建了一个新类。这个新类不仅包含了现有类型的所有成员(尽管private成员被隐藏起来,且不能访问),但更重要的是,它复制了基础类的接口。也就是说,可向基础类的对象发送的所有消息亦可原样发给衍生类的对象。根据可以发送的消息,我们能知道类的类型。这意味着衍生类具有与基础类相同的类型!为真正理...
代码星球 代码星球·2021-02-08

对象的接口

亚里士多德或许是认真研究“类型”概念的第一人,他曾谈及“鱼类和鸟类”的问题。在世界首例面向对象语言Simula-67中,第一次用到了这样的一个概念:所有对象——尽管各有特色——都属于某一系列对象的一部分,这些对象具有通用的特征和行为。在Simula-67中,首次用到了class这个关键字,它为程序引入了一个全新的类型(clas和type通常可互换使用;注释③)。③:有些人进行了进一步的区分,他们强调“类型”决定了接口,而“类”是那个接口的一种特殊实现方式。Simula是一个很好的例子。正如这个名字所暗示的,它的作用是“模拟”(Simulate)象“银行出纳员”这样的经典问题。在这个例子里,我们有一系列出纳员、客户、帐号以及交易等。每类成员(元素)都具有一些通用的特征:每个帐号都有一定的余额;每名出纳都能接收客户的存款;等等。与此同时,每个成员都有自己的状态;每个帐号都有不同的余额;每名出纳都有一个名字。所以在计算机程序中,能用独一无二的实体分别表示出纳员、客户、帐号以及交易。这个实体便是“对象”,而且每个对象都隶属一个特定的“类”,那个类具有自己的通用特征与行为。因此,在面向对象的程序...
代码星球 代码星球·2021-02-08

Collection接口与Iterator接口

Collection接口的实现类跟Vector相似。要从实现了Collection接口的类的实例中取出保存在其中的元素对象,必须通过Collection接口的Iterator()方法,返回一个Iterator接口。Iterator接口与Enumeration接口非常相似。该接口的优点是其中的方法名比较简短。Arraylist类实现了Collection接口例:将上例改写为用ArrayList类和Iterator接口来实现。importjava.util.*;publicclassTestCollection{publicstaticvoidmain(String[]args){ArrayListv=newArrayList();intb=0;intnum=0;System.out.println("Pleaseenternumber:");while(true){try{b=System.in.read();}catch(Exceptione){e.printStackTrace();}if(b==''||b==''){break;}else{num=b-'0'; v.add...
代码星球 代码星球·2021-02-08

Vector类与Enumeration接口

Vector类用于保存一组对象,由于java不支持动态数组,Vector可以用于实现跟动态数组差不多的功能。如果要将一组对象存放在某种数据结构中,但是不能确定对象的个数时,Vector是一个不错的选择。例:将键盘上输入的一个数字序列的每位数字存储在vector对象中,然后在屏幕上打印出各位数字相加的结果。importjava.util.*; //Vector类和Enumeration接口都在这个包中publicclassTestVector{publicstaticvoidmain(String[]args){Vectorv=newVector();intb=0;intnum=0;System.out.println("Pleaseenternumber:");while(true){try{b=System.in.read();//从键盘读入一个字节内容}catch(Exceptione){e.printStackTrace();}if(b==''||b=='')//如果是回车或换行的话,则退出while循环,即一串数据输入完成{break;}else{num=b-'0';...

接口因对不同的事件监听器对其处理可能不同

在java.util中有EventListener接口:所有事件监听者都要实现这个接口。java.util中有EventObject类:所有的事件都为其子类。 事件范例在CoreJavaGirl.java文件中。(文件已加注释)                                    注意:接口因对不同的事件监听器对其处理可能不同,所以只能建立监听的功能,而无法实现处理。 下面程序建立监听功能://监听器接口要定义监听器所具备的功能,定义方法{  voidWhatIdoWhenGirlHappy(EmotionEvente);voidWhatIdoWhenGirlSad(Emot...

List接口的实现类与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多

List接口的实现类(Vector)(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多。)结论:在考虑并发的情况下用Vector(保证线程的安全)。在不考虑并发的情况下用ArrayList(不能保证线程的安全)。 面试经验(知识点):java.util.stack(stack即为堆栈)的父类为Vector。可是stack的父类是最不应该为Vector的。因为Vector的底层是数组,且Vector有get方法(意味着它可能访问到并不属于最后一个位置元素的其他元素,很不安全)。对于堆栈和队列只能用push类和get类。Stack类以后不要轻易使用。实现堆栈一定要用LinkedList。 1packageTomTexts;23publicclassTomTexts_12{4publicstaticvoidmain(String[]args)5{6if(args.length<1)7{System.out.println("至少需要有一个参数!");8System.exit(0);//终止程序运行9}10inti=0,sum=0;1...

java.lang下面有一个接口:Comparable(可比较的)

对于自定义对象,Sort不知道规则,所以无法比较。这种情况下一定要定义排序规则。方式有两种:java.lang下面有一个接口:Comparable(可比较的)可以让自定义对象实现一个接口,这个接口只有一个方法comparableTo(Objecto)其规则是当前对象与o对象进行比较,其返回一个int值,系统根据此值来进行排序。如当前对象>o对象,则返回值>0;(可将返回值定义为1)如当前对象=o对象,则返回值=0;如当前对象<o对象,则返回值〈0。(可将返回值定义为-1)看TestArraylist的java代码。我们通过返回值1和-1位置的调换来实现升序和降序排列的转换。 1packageTomTexts;234abstractclassfatherClass5{6abstractvoidabstractMethod();7voidprintMethod()8{9System.out.println("fatherClassfunction!");10}11}12classchildClassextendsfatherClass13{14voidabstr...

Collection接口都是通过Iterator()(即迭代器)来对Set和List遍历

以下介绍接口:List接口:(介绍其下的两个实现类:ArrayList和LinkedList)ArrayList和数组非常类似,其底层①也用数组组织数据,ArrayList是动态可变数组。① 底层:指存储格式。说明ArrayList对象都是存在于数组中。注:数组和集合都是从下标0开始。ArrayList有一个add(Objecto)方法用于插入数组。ArrayList的使用:(完成这个程序)先import java.util.*;用ArrayList在一个数组中添加数据,并遍历。ArrayList中数组的顺序与添加顺序一致。只有List可用get和size。而Set则不可用(因其无序)。Collection接口都是通过Iterator()(即迭代器)来对Set和List遍历。 1packageTomTexts;23publicclassTomTexts_05{4publicstaticvoidmain(String[]args){5//将字符串常量作为String对象对待,实际上是将一个String对象赋值给另一个6Strings1="Hello,java...

JAVA中所有与集合有关的实现类都是这六个接口的实现类

JAVA中所有与集合有关的实现类都是这六个接口的实现类。 Collection接口:集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构。 List接口代表按照元素一定的相关顺序来组织(在这个序列中顺序是主要的),List接口中数据可重复。 Set接口是数学中集合的概念:其元素无序,且不可重复。(正好与List对应) SortedSet会按照数字将元素排列,为“可排序集合”。 Map接口中每一个元素不是一个对象,而是一个键对象和值对象组成的键值对(Key-Value)。  1packageTomTexts;23publicclassTomTexts_03{4publicstaticvoidmain(String[]args)5{Strings1="Hello,Java!";6inti=s1.length();7System.out.println("字符串s1长度为"+i);8}910} ...

匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口

匿名内部类(必须掌握):匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。IA被定义为接口。IAI=newIA(){};注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。因其为局部内部类,那么局部内部类的所有限制都对其生效。匿名内部类是唯一一种无构造方法类。匿名内部类在编译的时候由系统自动起名Out$1.class。 如果一个对象编译时的类型是接口,那么其运行的类型为实现这个接口的类。因匿名内部类无构造方法,所以其使用范围非常的有限。(下午:)Exception(例外/异常)(教程上的MODEL7)对于程序可能出现的错误应该做出预案。例外是程序中所有出乎意料的结果。(关系到系统的健壮性)  1packageTomText;2//测试成员变量修饰符的作用。3publicclassTomText_45{4privateintnum=5;//私有作用域,本类可见5publicintsetTom(intnum){//公共作用域6returnnum;//get方法返回成员变量num的值7}8pub...

接口实际上是定义一个规范、标准

接口往往被我们定义成一类XX的东西。接口实际上是定义一个规范、标准。 ① 通过接口可以实现不同层次、不同体系对象的共同属性;通过接口实现writeonceasanywhere.以JAVA数据库连接为例子:JDBC制定标准;数据厂商实现标准;用户使用标准。接口通常用来屏蔽底层的差异。②接口也因为上述原因被用来保持架构的稳定性。 1packageTomText;2//算术运算符的使用示例。3publicclassTomText_34{4publicstaticvoidmain(Stringargs[]){5inta=5+4;//a=96intb=a*2;//b=187intc=b/4;//c=48intd=b-c;//d=149inte=-d;//e=-1410intf=e%4;//f=-211doubleg=18.4;12doubleh=g%4;//h=2.413inti=3;14intj=i++;//i=4,j=315intk=++i;//i=5,k=516System.out.println("a="+a);17System.out.println("b...

类必须实现接口中的方法,否则其为一抽象类

类必须实现接口中的方法,否则其为一抽象类。实现中接口和类相同。 接口中可不写public,但在子类中实现接口的过程中public不可省。(如果剩去public则在编译的时候提示出错:对象无法从接口中实现方法。) 注:① 一个类除继承另外一个类,还可以实现接口;classIAImplextendsjava.util.ArrylistimplementIA{}                继承类                   实现接口这样可以实现变相的多继承。② 一个类只能继承另外一个类,但是它可以继承多个接口,中间用“,”隔开。ImplementsIA,IB所谓实现一个接口,就是指实现接口中的方法...

JAVA的核心概念:接口(interface)

JAVA的核心概念:接口(interface)接口与类属于同一层次,实际上,接口是一种特殊的抽象类。如: interfaceIA{}publicinterface:公开接口与类相似,一个文件只能有一个public接口,且与文件名相同。在一个文件中不可同时定义一个public接口和一个public类。 一个接口中,所有方法为公开、抽象方法;所有的属性都是公开、静态、常量。 一个类实现一个接口的格式:classIAImpleimplementsIA{}; 一个类实现接口,相当于它继承一个抽象类。 1packageTomText;2//关系运算符的使用示例。3publicclassTomText_32{4publicstaticvoidmain(Stringargs[]){5floata=10.0f;6doubleb=10.0;7if(a==b){8System.out.println("a和b相等");9}else{10System.out.println("a和b不相等");11}12}1314} ...

json-server 服务器的接口

  服务器接口的数据在浏览器网络地址中,便可查看;  获取接口的数据需要在网络地址后面,填写接口的名字即可,(对于json-server来说)...
代码星球 代码星球·2021-02-08

面向对象php 接口 抽象类

  1.定义类和实例化对象;  使用关键字class定义类,使用new实例化对象;  2.类成员的添加和访问;  类成员:有属性,方法,常量(常量名不带$符);  访问属性的时候,变量名不带$符  添加属性需要使用修饰符:  public:公共的,类外,类内,子类都可以访问;  protected:受保护的,类内,子类可以访问;  private:私密的,类内,访问;  public$name="zhang"  添加成员;  添加方法,如果方法前不带修饰符,默认为public   publicfunctionfn(){}  添加方法  访问属性:    $p->name;  访问函数:    $p->fn();  赋值:    $p->name="456";  添加常量:使用关键字const常量名;    consttxt="helloworld";  访问常量:范围解析符::  类名::常量名;    echoPerson::txt;  3.类的内部对象$this和内存原理;    $this他是一个对象指向实例化对象;    $p->fn()  $...
首页上一页...1011121314...下一页尾页