abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?

1、abstract与static

(what)

abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用

static:用来声明静态方法,静态方法可以被类及其对象调用

(how)

static与abstract不能同时使用

(why)

用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用,两者矛盾。

2、abstract与native

(what)

native:用来声明本地方法,该方法的实现由非java 语言实现,比如C。一般用于java与外环境交互,或与操作系统交互

(how)

native 可以与所有其它的java 标识符连用,但是abstract除外。

(why)

因为native 暗示这些方法是有实现体的,只不过这些实现体

是非java 的,但是abstract却显然的指明这些方法无实现体。

3、abstract与synchronized

(what)

synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法

(how)

abstract与synchronized不能同时使用

(why)

从synchronized的功能也可以看出,用synchronized的前提是该方法可以被直接调用,显然和abstract连用

转载:http://blog.csdn.net/fhm727/article/details/5222965

时间: 2024-10-19 16:33:45

abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?的相关文章

转载:abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?

原文:http://blog.csdn.net/fhm727/article/details/5222965 1.abstract与static (what) abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用 static:用来声明静态方法,静态方法可以被类及其对象调用 (how) static与abstract不能同时使用 (why) 用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被

【Java面试题】10 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

1.abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现. 2.static是静态的,是一种属于类而不属于对象的方法或者属性,而我们知道,类其实也是一个对象,他是在class文件加载到虚拟机以后就会产生的对象,通常来说它是单例的,就是整个虚拟机中只有一个这样的类对象(当然,如果用新的类加载器也会生成新的类的对象). 3.synchronized 是同步,是一种相对线程的锁. 4.native 本地方法,这种方法和抽象方法及其类似,它也只有方法声明,没有方法实

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

abstract的method不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系! native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用.例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现,例如,在windows用c语言实现的,所以,查看jdk的源代码,可以发现FileOutputStream的open方法的定义如下: privat

JAVA学习--Abstract使用方法

* abstract:抽象的,可以用来修饰类.方法 *  * 1.abstract修饰类:抽象类  * 1)不可被实例化  * 2)抽象类有构造器 (凡是类都有构造器)  * 3)抽象方法所在的类,一定是抽象类.  * 4)抽象类中可以没有抽象方法.  *  * 2.abstract修饰方法:抽象方法  * 1)格式:没有方法体,包括{}.如:public abstract void eat();  * 2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法.  

有些方法为什么会声明称static静态的

有些方法在调用的时候,没有必要都要先实例化一下,只需要:[类名. 静态方法 ]就行了. 哪些方法的调用没有必要实例化呢?网上找了个例子: 举个例子:Car类,1.静态方法Run(),Car.Run(); //访问方式:类.方法(); 静态方法也可以叫做类方法2.非静态方法Color()Car car1 = new Car();car1.Color(); //实例化后才可以访问,具体到某部车才有颜色car1.Run(); //实例化后,也可以访问静态方法,(不推荐)假如想知道你的车是怎么跑得(调用

不包含适合于入口点的静态“Main”方法/does not contain a static 'Main' method suitable for an entry point

error:as subject solution: 1. Must be declared as static 2. Main, is defined with the wrong case, such as lower-case main. 3. must return void or int 4. it must have either no parameters or else one parameter of type string[] static void Main() { //

abstract修饰方法总结

abstract这种方法修饰,主要用在抽象类和抽象方法. 抽象的类是不可实例化的比如 public abstract class Test{ } 他能够含有抽象的方法 public abstract class Test{ public abstract void defMethod(); } 抽象的方法是要让子类继承下去再定义它的,让抽象的概念得以设计.比如当一种面向对象设计遇到一种方法有多种设计的时候,能够在基类暂且不设计他,把设计的工作交给子类去完毕,但子类设计时,要么继续继承他超类的抽象

abstract修改方法

abstract这种方法修饰,主要用在抽象类和抽象方法. 抽象的类是不可实例化的比如 public abstract class Test{ } 他能够含有抽象的方法 public abstract class Test{ public abstract void defMethod(); } 抽象的方法是要让子类继承下去再定义它的.让抽象的概念得以设计.比如当一种面向对象设计遇到一种方法有多种设计的时候,能够在基类暂且不设计他,把设计的工作交给子类去完毕,但子类设计时.要么继续继承他超类的抽象

数据持久化、单例、重载【添加对不可访问的成员的操作】、魔术方法、类常量、static关键字对self的补充【静态延迟绑定实现$this的效果】、参数类型约束【参数前加类名】、遍历【iterator接口】、快速排序

1.数据持久化过程[传输(例如表单提交或php交互mysql)和保存过程] 使用的是字符串形式的流数据. 数据流就是为了传输[按照序列的形式进行传输] [http://baike.baidu.com/link?url=0MtUQMhFzc_EwJc09rXZV8KlfOL4jis6XNbRfmGA3rQhDcGwOp8togLVQjXBV34M] 所以将其他类型数据转化为字符串的过程也是序列化的过程 [这个概念和图片.视频的流媒体的区别?] [注意点] 另外mysql中sql语句中的某些关键词为