Java学习心得之抽象类和接口
为了让自己更好的理解,写了如下代码来总结:
1、接口定义,可以看出来接口中可以定义常量,也可以定义方法,但是接口中方法不能有方法体,必须是一个抽象的方法,仅仅是一个方法的声明
1 /** 2 * 与InTest 一起测试接口与类 3 */ 4 public interface InterTest { 5 int a=10; 6 public void sysout(); 7 abstract public void sysin(); 8 String sysout1(); 9 }
2、抽象类的定义:在抽象类中,方法可以被abstract修饰也可以不被修饰,但是不是抽象方法必须要有方法体,而且抽象类中也可以有main方法,其中可以看出来main方法也是可以被重载的,只要其中的形参不同
1 /** 2 * 与InTest 一起测试抽象类和普通类 3 */ 4 public abstract class AbsClass { 5 public void aa() { 6 System.out.println("不是抽象方法必须要有方法体"); 7 } 8 abstract public void a(String str); 9 public static void main(String[] args){ 10 System.out.println("args[0]是输入的值"+args[0]+" "+args[1]); 11 System.out.println("抽象类父类的main方法"); 12 } 13 public static void main(int a){ 14 System.out.println("a的值是"+a); 15 } 16 }
3、类的定义:这个类实现了上边的接口,继承了抽象类。
- 实现接口:可以看出来必须是重写所有的接口中定义的方法,可以这样来理解,接口中知识约定了一种规范,说明了一种功能,但是这种功能方法具体怎样来做,还是交给实现接口的类来做,这样也增加了程序的灵活性,同时也有了一定的约束
- 继承类:在继承的类中,父类中的方法可以不比全部重写,但是抽象方法必须重写,同时也可以在子类中实现父类的main方法。
1 public class InTest extends AbsClass implements InterTest{ 2 /** 3 * 接口的方法必须被重写 4 */ 5 public void sysout() { 6 } 7 public void sysin() { 8 } 9 public String sysout1() { 10 return null; 11 } 12 13 /** 14 * 抽象方法必须被重写 15 */ 16 public void a(String a) { 17 } 18 19 /** 20 *也可以重载父类的方法,不管是不是抽象的 21 */ 22 public void a(){}; 23 public static void main(String args[]){ 24 System.out.println("子类的main方法"); 25 String a[]={"ab","bb"}; //定义字符串数组 26 AbsClass.main(a); //实现了抽象类的main方法 27 AbsClass.main(4); 28 } 29 }