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 }
原文地址:https://www.cnblogs.com/Lowp/p/2681303.html