java中单继承,多接口的实现及一些注意事项

java中一个类的直接父类只能有一个,但可以实现多个接口。

 1 package javaKeyTechnology;
 2 /**
 3  * java中单继承,多接口。
 4  * 一个类的直接父类只能有一个,但可以同时实现多个接口。
 5  */
 6 class Fath{
 7     int age;
 8     Fath(int age){
 9         this.age = age;
10         System.out.println("I am Father");
11     }
12 }
13 
14 interface Like{ //接口本身的修饰符可以是public或者默认
15     void like(); //但不管怎样,接口中的方法默认都是public,因此这里不显式的写出来,直接写返回值
16 }
17 
18 interface DisLike{
19     void dislike1();
20     void dislike2();
21 }
22 
23 public class Son extends Fath implements Like,DisLike{ //必须实现声明的所有接口中的所有方法,否则Son是抽象的,不能实例化对象
24     String name;
25     public Son(String name,int age){
26         super(age); //父类没有默认构造方法
27         this.name = name;
28     }
29     public void like(){ //但在实现时必须写上public
30         System.out.println("father like smoking"+age);
31     }
32 
33     public void dislike1(){
34         System.out.println("father dislike reading");
35     }
36     public void dislike2(){
37         System.out.println("father dislike eating");
38     }
39     public static void main(String[] args){
40        Son e = new Son("Yang",45);
41         System.out.println("age:"+e.age+";name:"+e.name);
42         e.like();
43         e.dislike1();
44         e.dislike2();
45     }
46 }

java中单继承,多接口的实现及一些注意事项_第1张图片

 

 

 
 

需要注意的点:

1.继承时,由于父类构造器是有参构造器,所以在子类构造函数的首行,必须用super()调用父类构造方法。

 但如果父类是无参构造方法(默认的隐式无参和人为定义的显示无参),则不需要super();

   如果是父类的非私有成员变量与子类构造函数/其它方法的局部变量同名了,又必须在该局域调用它,则用super.变量名调用该变量,否则可直接调用(同this的用法)

2.定义接口时,接口本身的修饰符是public或默认不写,但接口中声明的方法都是默认public的,变量默认public static void(实际就是常亮)。因此在接口中,这些修饰符都不写

3.但在类中实现接口时,实现接口中的方法时,必须声明public。

4.必须实现该类声明的全部接口的全部方法(一个接口中可以有多个方法),否则该类就是抽象的,如果加上abstract就不能实例化,不加abstract就会报错。

你可能感兴趣的:(java中单继承,多接口的实现及一些注意事项)