标签:调用父类构造方法 tin ring str 16px 调用 isl 成员变量 super
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 }
需要注意的点:
1.继承时,由于父类构造器是有参构造器,所以在子类构造函数的首行,必须用super()调用父类构造方法。
但如果父类是无参构造方法(默认的隐式无参和人为定义的显示无参),则不需要super();
如果是父类的非私有成员变量与子类构造函数/其它方法的局部变量同名了,又必须在该局域调用它,则用super.变量名调用该变量,否则可直接调用(同this的用法)
2.定义接口时,接口本身的修饰符是public或默认不写,但接口中声明的方法都是默认public的,变量默认public static void(实际就是常亮)。因此在接口中,这些修饰符都不写
3.但在类中实现接口时,实现接口中的方法时,必须声明public。
4.必须实现该类声明的全部接口的全部方法(一个接口中可以有多个方法),否则该类就是抽象的,如果加上abstract就不能实例化,不加abstract就会报错。
标签:调用父类构造方法 tin ring str 16px 调用 isl 成员变量 super
原文地址:https://www.cnblogs.com/leechee9/p/12111271.html