在java中,抽象方法可以是公共方法以外的任何方法吗?
在java中,抽象方法可以是公共方法以外的任何方法吗?抽象方法是隐式公开的还是在未指定的情况下打包的?(常规方法是隐式打包的,对吗?)?(private给我的印象是有问题的)在java中,抽象方法可以是公共方法以外的任何方法吗?,java,Java,在java中,抽象方法可以是公共方法以外的任何方法吗?抽象方法是隐式公开的还是在未指定的情况下打包的?(常规方法是隐式打包的,对吗?)?(private给我的印象是有问题的)abstract方法与普通方法具有相同的可见性规则,只是它们不能是private为什么不测试一下呢 abstract class A { private abstract void pri (); protected abstract void pro (); abstract void pa
abstract
方法与普通方法具有相同的可见性规则,只是它们不能是private为什么不测试一下呢
abstract class A {
private abstract void pri ();
protected abstract void pro ();
abstract void pa ();
public abstract void pu ();
}
javac A.java
A.java:2: illegal combination of modifiers: abstract and private
private abstract void pri ();
^
1 error
a) 是的,私有抽象方法是无用的,它会使整个类变得无用
abstract class B {
// private abstract void pri ();
protected abstract void pro ();
abstract void pa ();
public abstract void pu ();
}
public class A extends B {
protected void pro () {} ;
void pa () {} ;
public void pu () {} ;
}
其他访问修改关键字都被接受 默认和受保护级别的可见性也可用。如果子类位于不同的包中,则抽象方法的默认可访问性也会有问题,因为具有默认可访问性的成员只能由同一包中的类访问
若你们不能访问继承的抽象类,你们就不能重写它。示例如下
package PackA;
abstract public class SupClassA
{
protected abstract void pro();
abstract void pa();
}
package PackB;
import PackA.*;
class SubclassB extends SupClassA
{
protected void pro()
{
System.out.print("This is implementation of Pro method");
}
void pa()
{
System.out.print("This is implementation of Pa method");
}
}
编译时,编译器抱怨它不能重写方法pa,即使提供了实现。(当pa()方法在两个类中都声明为受保护时有效)
只有public
和abstract
才允许与方法组合使用
例如:
public abstract void sum();
我们在方法上使用abstract关键字,因为abstract方法不指定主体。这确实回答了关于它们被私有化的问题。我被否决了,因为一个简单的谷歌搜索发现了无数Java抽象方法的定义以及修饰符的作用。这个地方不应该成为网络上或Oracle网站上大量Java文档的懒散替代品,这听起来像是一个需要在meta上讨论的问题,而不是我的问题。-1问一个问题,你可以通过编译器自己检查。它们也可以被保护或包私有。
public abstract void sum();