所有基础不扎实的都来看看。
程序 编译时通过的情况(javac) 解释时通过(java)
class{} 没有(说没有标识符) 没有
class testabstract{} 通过 没有(无main)
class{
public static void main() 通过 没有(无main)
{}
}
class{
public static void main(String s[])
{
System.out.println("d"); 通过 通过
}
}
class testabstract
{
//此文件被命名为tstabstract
public static void main(String s[]) 通过 没有类定义
{
System.out.println("dd");
}
}
public class testabstract
{
public static void main(String s[]) 通过 通过
{
System.out.println("dd");
}
}
abstract class testabstract
{
void getData(){}; 通过 没有(无main)
}
class testabstract
{
abstract void getData(){}; 没有(因为类没有被声明为abstract)
}
abstract class testabstract
{
abstract void getData(); 通过
}
abstract class testabstract
{
abstract void getData(){}; 不能通过(不能有方法体)
}
abstract class testabstract
{
abstract void getData(); 通过
void getData(String a){};
}
interface testabstract
{
abstract void getData(){}; 没有通过(不能有方法体{})
}
interface testabstract
{
abstract void getData(); 通过
}
interface testabstract
{
abstract void putAnswer();
void putAnswer(String a){}; 不能通过(不能有方法体{})
}
interface testabstract
{
abstract void putAnswer(); 通过
void putAnswer(String a);
}
interface testabstract
{
abstract void putAnswer(){};不能通过(不能有方法体{})
void putAnswer(String a);
}
interface testabstract
{
void putAnswer();
void putAnswer(String a); 通过
}
interface testabstract
{
void putAnswer(){};
void putAnswer(String a); 不能通过
}
abstract interface testabstract
{
abstract void getData(); 通过
}
abstract interface testabstract
{
void getData(); 通过
}
abstract interface testabstract
{
void getData(){}; 不能通过(不能有方法体)
}
看来有以下几点:
1.如果这个文件里有一个类,那么这个类可以不声明为public,文件名也可以不为这个类名,但是只能编译通过,不能运行通过。要想运行通过,只能将文件名和类名同名(这时也可以没有public)。
2.如果文件里有几个类,那么一定需要一个类为public(这个类里面一定要有main,
main肯定要用public static void 声明),且文件名和该类名相同。
3.main的入参一定要是String[],参数的名字可以不是args,比如可以是s。
4.类中要是有抽象方法,那么该类必须声明为抽象。但是该类中可以有非抽象方法。
5.接口中要是有抽象方法,接口不必声明为抽象。
6.接口中只要是含有方法体({})的方法,即报错,意即接口中不能有含有方法体的方法,不管该接口是否为abstract,也不管接口内是否有abstract方法。
7.一个没有abstract和有abstract的接口在编译时是相同的规定的。即不能有方法体!
8.所以说,是接口必为抽象!