① java中抽象方法不能为private,final或者static,为什么细细说明,或给个例子
4)抽象方法不能为private,final或者static,为什么?马克-to-win:抽象方法的最实质的意
义在于被未来的子类覆盖实现掉。它自己是个空方法。private的实质意义在于本类其他方法调用它。你自己是个空方法,别人调用你有什么用?所以
abstract和private在一起毫无意义。final规定子类不能再覆盖它。abstract是专等着要别人来覆盖,二者矛盾。所以不能放在一起
使用。有关static,我们上一章讲过:马克-to-win:static的成员是在程序执行到main时就已经确定的。要不为什么起
名叫静态static呢?而本章后面,我们要讲多态的动态方法调度。动态方法调度就是指在运行时才决定执行哪个方法(是子类的还是父类的)。比如运行时如
果用户输入自行车,就执行自行车的驾驶方法。马克-to-win:如果用户输入小轿车,就执行小轿车的驾驶方法,涉及到用户,这些都只能在运行时才能干。
而abstract一定用到动态方法调度。所以这静态和动态二者是矛盾的,不能一起用。因为道理是这样,所以当时sun公司的设计者就这样设计
了.。。。。。。。。。
详情网上找“马克-to-win”,参考他的网站或他的网络空间:java第三章的内容,如果实在找不到,按我下面说的地址找:
网站名是:mark-to-win.com
再附加上下边的路径地址: /JavaBeginner/JavaBeginner3_web.html#AbstractNotFinalPrivateStatic
② java中接口和抽象类以及它们的属性方法都分别可以用什么访问修饰符
不能用private修饰,不然抽象继承不了,接口实现不了。其他的应该都可以。
public 使用对象:最广,类、接口、变量、方法
protected使用对象:变量、方法 注意:不能修饰类(外部类)
default 使用对象:类、接口、变量、方法。(即缺省,什么也不写)
private 使用对象:变量、方法 注意:不能修饰类(外部类)
abstract使用对象:类、接口、方法
static 使用对象:类、变量、方法、初始化函数(注意:修饰类时只能修饰 内部类 )
final 使用对象:类、变量、方法
--详情见http://blog.chinaunix.net/uid-26434689-id-3403828.html
(如有疑问或侵权问题,请另行通知)
③ java中抽象方法不能使用修饰符_和_修饰
private和final
④ java里 static能修饰抽象方法吗借口呢 求个案例
java中抽象类的方法可以不能用static来修饰,自由抽象类的属性可以。接口中的方法也不行,接口只是抽象类的一个特殊的。
⑤ java 抽象方法可以是static吗
static是静态的。抽象方法的目的是希望子类重写(其实也不能叫重写,应该叫实现)这个抽象方法。而你又定义为static,这里就出现一个问题:static的方法能直接通过类名调用,而你这个方法没有具体的实现,这里就会自相矛盾,所以抽象方法不能用static修饰。
⑥ 抽象类的抽象方法可以用private修饰吗
C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符: public可以被任意存取; protected只可以被本类和其继承子类存取; internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。 protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。 private只可以被本类所存取。 如果不是嵌套的类,命名空间或编译单元内的类只有public和internal两种修饰。 new修饰符只能用于嵌套的类,表示对继承父类同名类型的隐藏。 abstract用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。抽象类可以包含抽象的成员,但这并非必须。abstract不能和new同时用。下面是抽象类用法的伪码: abstract class A{public abstract void F();}abstract class B: A{public void G() {}}class C: B{public override void F(){//方法F的实现}}抽象类A内含一个抽象方法F(),它不能被实例化。类B继承自类A,其内包含了一个实例方法G(),但并没有实现抽象方法F(),所以仍然必须声明为抽象类。类C继承自类B,实现类抽象方法F(),于是可以进行对象实例化。 sealed用来修饰类为密封类,阻止该类被继承。同时对一个类作abstract和sealed的修饰是没有意义的,也是被禁止的。
⑦ Java abstract类中可以有非abstract方法,但该方法不可以用final修饰对不对
publicabstractclassFinalTest{
/**
*@Title:test
*@Description:抽象方法不能使用<i>final</i>修饰,因为final修饰的方法是最终的/不可修改的,
*所以被修饰的方法不能是抽象的,由此可知<i>Interface</i>中的接口方法也不能使用final修饰.
*但成员属性只能是<code>publicstaticfinal</code>修饰,即使没有添加修饰符时.
*/
();
/**
*@Title:test2
*@Description:当非抽象方法已经是最理想的逻辑时,通常会使用<i>final</i>修饰避免其子类修改该接口的逻辑.
*/
(){
}
}
希望能帮助你!
⑧ 什么是抽象类和抽象方法
抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。
在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。
抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。抽象类本身不具备实际的功能,只能用于派生其子类。抽象类中可以包含构造方法,但是构造方法不能被声明为抽象。
抽象类不能用final来修饰,即一个类不能既是最终类又是抽象类。
abstract不能与private、static、final、native并列修饰同一个方法。
程序举例:abstract
class
Animal
//定义抽象类
abstract
void
eat();
//定义抽象方法}class
Horse
extends
Animal
//定义继承Animal的子类
void
eat()
//重写父类的抽象方法
}class
Dog
extends
Animal
void
eat()
}class
test}运行结果:
马吃草料!
狗吃骨头!
如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快!
vae.la
⑨ C#中的抽象类为什么不能用static修饰其成员
是正常的。
static表示的意思就是静态。其实如果程序内含有静态成员时,类默认就是静态的。也就是说,如果含有静态成员的类,其实前边加不加static是一样的效果的!
对于你补充的问题,其实不应该这么说的,应该说那些不能被静态修饰符修饰才对。因为除了他不能修饰的,其余的都能修饰。
不能修饰超类(抽象类),超类与抽象类是不同领域的相同术语,一般在java中称超类,在c#等微软语言中称抽象类。超类指的是含有抽象方法的类,因此该类只能被继承,不成具体化实体化。而抽象类指的是不能被实例化的类,只能用于继承,含有抽象方法——你晕不晕?其实他们是一个概念两个不同范畴中的术语。与之相同的还有接口,也没有实体,所以,不能修饰抽象类(超类)与接口。换句话说不能与abstrat联用,不能放置在interface之前。
静态方法不般不用于重写——已经是静态了,还重写什么劲,所以不与override联用,不用与virtual虚方法联用。其他的都可以使用。