【java】源码详解接口跟抽象类的区别

【java】源码详解接口和抽象类的区别

JAVA基础之基础,抽象类和接口的区别。。。。。。


要是还不能很清晰的给别人讲述这两者之间的区别,建议自己动手写写代码,就会有所领悟了。


1.抽象类

public abstract class testAbstractClass {
	//抽象类是可以有私有方法或私有变量
	private int TEST_NUM;
	
	public abstract int testMethod();

	public int test2Method() {
		return 0;
	}
	//私有方法
	private int test3Method() {
		return 0;
	}
}


2.接口

public interface testInterface {
//接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的
	public abstract int testInterface();
	public int test2Interface();
	
}


3.子类继承抽象类

public class testExtendsAbstractClass extends testAbstractClass{
//继承抽象类可以有选择的重写需要用到的方法,但抽象方法必须实现
	@Override
	public int testMethod() {
		// TODO Auto-generated method stub
		return 0;
	}

}


4.子类实现接口

public class testImplementsInterface implements testInterface {
//实现接口一定要实现接口定义的所有方法
	@Override
	public int testInterface() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int test2Interface() {
		// TODO Auto-generated method stub
		return 0;
	}

}
注:以上代码均为编译通过


总结:

1.接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的;而抽象类是可以有私有方法或私有变量;

2.实现接口一定要实现接口定义的所有方法,而继承抽象类可以有选择的重写需要用到的方法,但抽象方法必须实现;

3.一般应用里,最*的是接口,然后是抽象类实现的接口,最后才是具体类的实现。

4.接口多实现,类单继承


常见思考问题:

1.抽象类中私有方法或私有变量有什么作用;

2.接口中抽象方法和一般方法有什么区别;

3.其他……