转自:http://www.cnblogs.com/yueue/archive/2010/04/20/1715863.html 一,抽象类:abstract     1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类;     2,抽象类中可以有具体的实现方法;     3,抽象类中可以没有抽象方法;     4,抽象类中的抽象方法必须被它的子类实现,如果子类没有实现,则该子类继续为抽象类     5,抽象类不能被实例化,但可以由抽象父类指向的子类实例来调用抽象父类中的具体…
转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出…
JAVA 修饰符public final static abstract transient  关键字: public final static abstract ...  1.public protected default private 组 位置                        private      默认      protected        public  同一个类                    是            是         是      …
Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Comparable public final class Byte extends Number implements Comparable public final class Character extends Object implements Serializable, Comparable p…
abstract class Java中允许使用abstract修饰符声明方法,此时只定义方法但是不实现方法(abstract修饰的方法没有主体,只有一个签名和一个分号). 以下是abstract方法和这些方法所在的abstract类相关的规则: 只要类中有一个abstract方法,那么这个类本身就自动成为abstract,而且必须声明为abstract class,否则会导致编译错误; abstract class无法实例化; abstract类的子类必须覆盖超类的每个abstract方法,并…
转载: Java不支持多重继承,即一个类只能有一个父类 为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口 接口是抽象方法和常量值定义的集合,是一种特殊的抽象类接口中只包含常量和方法的定义,没有变量和方法的实现接口中的所有方法都是抽象的接口中成员的访问类型都是public接口中的变量默认使用public static final标识(可以在定义的时候不加此修饰,系统默认) 接口通过使用关键字interface来声明格式:interface 接口的名字 接口体:接口体中包含常量定义和…
类字面常量 final 静态域不会触发类的初始化操作 非 final static 静态域(以及构造器其实是一种隐式的静态方法) Class.forName():会自动的初始化: 使用 .class来创建对 class 对象的引用,不会自动地初始化该 class 对象,初始化被延迟到了对静态方法(构造器隐式的是静态的)或者非final静态域(注意final静态域不会触发初始化操作)进行首次引用时才执行. 1. static{} 静态代码块与 {} 非静态代码块 二者均是在 JVM 加载类时,且在…
[问题描述]关于Java中synchronized 用在实例方法和对象方法上面的区别 [问题分析]大家都知道,在Java中,synchronized 是用来表示同步的,我们可以synchronized 来修饰一个方法(实例方法和类方法---注:不知道这样叫准确不准确,大家理解我的意识就行了).也可以synchronized 来修饰方法里面的一个语句块. 修饰实例方法: public synchronized void x() throws InterruptedException { ; i++…
3.接口持有多个类的共享常量  接口另一主要功能,马克-to-win: 可以使用接口来引入多个类的共享常量.所有的这些变量名都将作为常量看待.所有定义在接口中的常量都默认为public.static和final.原因见后面. 下面的例子当中,如果Server回答的结果是0或1,程序可读性太差,效果绝对没有YES或NO好.所以就把YES和NO放到了Client和Server的共同的接口ConstantbaseM_to_win当中. note: the following example class…
引入高速缓存概念 在计算机在执行程序时,以指令为单位来执行,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入. 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行指令的速度很快,而从内存读取数据和向内存写入数据的过程相对很慢,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度.因此就引入了高速缓存. 特性:缓存(Cache memory)是硬盘控制器上的一块内存,是硬盘内部存储和外界接口之间的缓冲…
今天敲代码的时候遇到了这个问题,大体这个问题可以简化成这样: public class Test1 { public String get() { return "123"; } public static void main(String[] args) { String string =get(); } } 1 2 3 4 5 6 7 8 9 10 显示 Cannot make a static reference to the non-static method get() fr…
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理.本…
(一)概述    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract class和interface之间在对于抽象类定义的支持方面具有 很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的 选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理 解.对于设…
(一)概述    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract class和interface之间在对于抽象类定义的支持方面具有 很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的 选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理 解.对于设…
什么是 Interface Java接口(Interface)是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为.打一个比方,接口好比一个戏中的角色,这个角色有一些特定的属性和操作,然后实现接口的类就好比扮演这个角色的人,一个角色可以由不同的人来扮演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处. 有哪些面试常用的 Interface Set 注重独一无二,该体系集合可以知…
1.final类不能有子类,也就谈不上继承的说法,如果用final修饰成员变量或者局部变量,那成了常量需要制定常量的值. 2.对象的上转型对象,上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法,上转型对象可以访问子类继承或者隐藏的成员变量,也可以调用子类继承的方法或者子类重写的实例方法.但是可以强制将对象的上转型对象再强制转换到一个子类对象,这时该子类对象又恢复了子类对象属性. 3.继承和多态,多态性就是指父类的某个方法被子类重写,可以各自产生自己的行为, 4.abstract抽象类…
概念 usb插槽就是现实中的一个接口 你可以把u盘都插在usb插槽上,而不用担心买来的u盘插不进插槽中不管是插电脑,还是插相机,还是插收音机原因是做usb的厂家和做各种设备的厂家都遵守了统一的规定包括尺寸,排线等等 在举例怎么去理解接口呢? 比如:李宁高管 让 三个设计师一人去设计一双鞋子.不管你怎么设计都必须有鞋带,鞋底,和布料,把这个整体可以看作一个接口,里面的鞋带,鞋底就是方法,三个设计师都必须在继承的时候实现.接口的作用,给你制定规范,你必须去实现,必须按照我给你的做 继承的注意事项 我…
Abstract(抽象)可以修饰类.方法 如果将一个类设置为abstract,则此类必须被继承使用.此类不可生成对象,必须被继承使用. Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性. Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型. Final和abstract永远不会同时出现. 当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效. 注意比较: …
当多个类中出现相同功能,但是功能主题不同,这时可以进行向上抽取.这时只抽取功能定义,而不抽取功能主体. 抽象:看不懂.1, 抽象方法一定定义在抽象类中.2, 抽象方法和抽象类都必须被abstract关键字修饰.3, 抽象类不可以用new创建对象.因为调用抽象方法没有意义.4, 抽象类中的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用. 如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类. 抽象类和一般类没有太大的不同.该如何描述事物,就如何描述事物,只不过该事物出现了一些看不…
接口:java接口是一些方法表征的集合,但是却不会在接口里实现具体的方法. java接口的特点如下: 1.java接口不能被实例化 2.java接口中声明的成员自动被设置为public,所以不存在private成员 3.java接口中不能出现方法的具体实现. 4.实现某个接口就必须要实现里面定义的所有方法. 接下来看一个实现接口的案例: package hello; interface competer{ //定义接口 void set_compt(int com); void print_co…
首先我们从C++说起, c++可以多继承.也就是一个类型 --- class,可以继承自2个以上的父类型.多继承导致一个问题,很多人知道.例如,如果类型B,类型C均继承自类型A.然后类型D继承自类型B和C.那么构造D的实例的时候,由于要调用父类型的构造方法,最终会调用两次A的构造方法.结果类型D的实例有两套祖父的数据,也就是外公和爷爷长的一模一样,以后使用的时候很麻烦.每次D要和祖父打交道,都要额外的区分到底是外公还是爷爷. 再说,内存里面出现两套一模一样的东西,一个用不上,还容易引起混乱,岂不…
关键字:abstract 用来修饰抽象类与抽象类中的方法 抽象类需要注意的几点: 抽象类不能被实例化.抽象类可以包含属性:方法:构造方法,但是构造方法不能用来new实例,只能被子类调用 有抽象方法的类,一定是抽象类,但是抽象类可以没有抽象方法. 当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现,除非子类也为抽象类. 抽象方法不能有方法体. 抽象类不能用final声明,因为抽象类只有被继承才有存在的意义,final修饰的 类不可以被继承       关键字:final 用来…
目录 简介 Functional Interface Function:一个参数一个返回值 BiFunction:接收两个参数,一个返回值 Supplier:无参的Function Consumer:接收一个参数,不返回值 Predicate:接收一个参数,返回boolean Operator:接收和返回同样的类型 总结 简介 java 8引入了lambda表达式,lambda表达式实际上表示的就是一个匿名的function. 在java 8之前,如果需要使用到匿名function需要new一个…
需求 当父类某个方法,需要声明,但是又不确定如何实现时,可以用抽象方法,那么这个类就是抽象类 例如:父类是一个动物类,父类里面有很多方法,其中有一个方法是吃食物,但是不知道吃什么,需要子类继承的时候重写该方法,去设置动物到底吃什么食物 细节 当类用abstract关键字声明时,就是一个抽象类 当一个类中存在抽象方法时,需要该类声明为abstract类 抽象方法不能有方法体.例如:public abstract void eat(); 抽象类不能被实例化,不能 new 抽象类 抽象类不一定要含ab…
3.接口interface和private内部类协同工作[新手可忽略不影响继续学习]马克-to-win:由于是private内部类,外面无法访问甚至无法看到你编的源代码(如果在不同的包中),非常安全.外界只能调用接口中的方法.下例中访问不了Core,甚至你不知道有Core的存在.给你的就是外部的接口,供你使用.马克-to-win:我们一直没讲class 如何能private, 这里内部类时,就可以用private了.且内部类随便访问外部类的东西, 这就非常有力度了, 可以用到外部类所有的资源!…
用static修饰符修饰的数据成员,并不是属于那个对象的,而是属于类.静态数据成员在定义的时候已经分配了内存,而此时对象还没有建立好. 当然它也是被保存到类的方法中的,而不是对象内存中,大家都是可以访问,可以通过类名访问,这点在C++中也是如此. 静态数据成员属于类的作用域,也可以使用public,private,等进行修饰,但是访问层次不同. 以下是java代码: import  java.text.NumberFormat;import  java.util.Locale;import  j…
抽象类:不能实例化!子类继承抽象类, 实例化子类对象才可以调用, 多态的体现; 抽象方法:必须被重写才能被调用; 静态方法:类名直接调用,或者实例化对象调用; 构造方法:new后面的括号里面带参数,就用带参数的构造方法实例化,                    new后面的括号里面不带参数,就用无参构造方法实例化; 构造方法的重载: 例如,程序有参构造方法1和2 这里面还涉及到一个执行顺序的问题,详情对比程序运行结果   这块的学习一定不要单纯背诵,结合eclipse练习! package…
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; ... ... } final的最基本特点就是不可继承,不可修改.不可修改说的是引用地址不可变.他会一直指向某块堆等. 为了实现字符串池(常量池),字符串必须是不可变的. 还有就是String被设计为多线程安全的,同一实例可以被多个对象共享,而对象只能读…
功能向上聚合 Abstract作为抽象类和抽象方法,第一种情况是在聚合子类的通用性上起到作用,往往出现在重构过程中自然而然形成的一种层次结构-希望将多个子类的通用方法和逻辑提取到父层的抽象类. 这种重构情况的最极致表现就是:若再加入新的子类,子类只需要实现抽象类的abstract方法,而且可能就只用几句话的简单声明,或者做一些属性设置就可以了,往往只是用于区分子类的特征,真正的逻辑处理实际上是在抽象类的方法内实现.这样就极大地简化了子类的代码逻辑量,实现子类层去耦合,抽象层高内聚的极佳效果 如下…
1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法. 2,abstract修饰方法,会使这个方法变成抽象方法,声明(定义)而没有实现,实现部分以":"代替.需要子类继承实现(覆盖). 3.abstract修饰符在修饰类时必须放在类名前. 4.abstract修饰方法就是要求其子类覆盖(实现)这个方法.调用时可以以多态方式调用子类覆盖(实现)后的方法,也…