Java中接口的相关问题

Q1:接口中可以定义方法并且实现方法吗?

A:

  • 接口中可以定义静态方法和抽象方法。
    静态方法可以实现方法体并且可以通过 接口名.方法名() 来 调用方法。
    抽象方法不能实现方法。
代码 A:
interface StaticAndAbstract{
	static void testStatic(){
		System.out.println(“Hello”);
	}
	abstract void testAbstract (){
  		System.out,println(“world”);//报错:抽象方法不能有方法体
	}
}
public static void main(Strings[] args){
	StaticAndAbstract.testStatic();
}
  • 接口中成员变量默认用 public static final
    修饰成员方法默认用 public static 修饰。

Q2:静态方法和抽象方法的区别?

A:

  • 静态方法属于字节码文件,可以直接用 类名.方法名()直接调用,不用创建类 的实例。
代码 A:
class StaticMethod{
     static void test(){
         System.out.println("Hello world!");
	}
}
public static void main(String[] args){
    StaticMethod.test();
}

输出:
Hello world
  • 抽象方法并没有方法体,不能直接运行,需要具体实现。
代码 B:
abstract class AbstractMethod{
	/**
	abstract void test(){
		System.out.println("Hello world!");//报错:抽象方法不能有方法体
	}
	*/
	abstract void test();//定义抽象方法不需要 “ { } ” 
}
class MyAbstractMethod extends AbstractMethod{
	void test(){
		System.out.println("Hello world!");
	}
}
public static void main(String[] args){
	MyAbstractMethod myAbstractMethod = new MyAbstractMethod();
	myAbstractMethod.test();
}

输出:
Hello world!
  • 抽象方法和静态方法之间没有关系,且一个方法不能同时用 static 和abstract 修饰。
代码 C:
static abstract void test(){}//错误
  • 但是可以在抽象类里声明静态方法。虽然抽象类不能实例化,可以通过
    类名.静态方法()调用改方法。
代码 D: 
abstract class Test{
	/**
	static void test();//报错:需要方法体,而不是分号
	*/
 	static void test(){//可以写入方法体,也可以不写入
 		System.out.println("Hello world!");
 	}
}
public static void main(Strings[] args){
	Test.test();
}

输出:
Hello World!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值