JAVA07 接口与继承

一  动手实验:继承条件下的构造方法调用

1)源代码

 1 public class TestInherits {
 2
 3     public static void main(String[] args) {
 4         // TODO Auto-generated method stub
 5
 6         Child c = new Child();
 7     }
 8
 9 }
10
11 class GrandParent
12 {
13     public GrandParent()
14     {
15         System.out.println("GrandParent Created.Sting:");
16     }
17     public GrandParent(String string)
18     {
19         System.out.println("GrandParent Created.Sting...:" + string);
20     }
21 }
22
23 class Parent extends GrandParent
24 {
25     public Parent()
26     {
27         super("mk");
28         System.out.println("Parent Created");
29         //super("Hello.GrandParent");
30     }
31 }
32
33 class Child extends Parent
34 {
35     public Child()
36     {
37         System.out.println("Child Created");
38     }
39 }

2)结果截图:
(super不是父类构造方法的第一句)

(super是父类构造方法的第一句)

3)结果分析:

通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。

4)为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

不能反过来。子类是通过父类继承过来的,所以子类有父类的属性和方法,如果不调用父类的构造方法,不能初始化父类中定义的属性,即不能给父类的属性分配内存空间 ,如果父类的属性没有分配内存空间,那么子类访问父类的属性,就会报错。

二  神奇的+号

1)源代码:

 1 public class Fruit
 2 {
 3     public String toString()
 4     {
 5         return "Fruit toString.";
 6     }
 7
 8     public static void main(String args[])
 9     {
10         Fruit f=new Fruit();
11         System.out.println("f="+f);
12         System.out.println("f="+f.toString());
13     }
14 }

2)结果截图:

3)结果分析:

注意倒数第二句,一个字串和一个对象“相加”,得到以下结果?

Fruit类覆盖了Object类的toString方法。在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ + hashCode”。

为了返回有意义的信息,子类可以重写toString()方法。

三 动手动脑 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字?

1)源代码:

 1 public class fugaiSuper {
 2     public static void main(String[] args) {
 3
 4         Child c = new Child();
 5         c.showMessage();
 6     }
 7 }
 8
 9 class Parent
10 {
11     public void showMessage()
12     {
13         System.out.println("parent!");
14     }
15 }
16
17 class Child extends Parent
18 {
19     public void showMessage()
20     {
21         System.out.println("child!");
22         super.showMessage();
23     }
24 }
时间: 2024-10-03 21:53:19

JAVA07 接口与继承的相关文章

一个接口能否继承另一个接口?一个抽象类能否实现一个接口?

都可以: 一.一个接口能否继承另一个接口? 接口继承接口  本质就是一个抽象类继承另一个抽象类(它们都没写方法的实例).当一个类继承了一个抽象类,它必须要重写父类 抽象类中的抽象方法,如果不去重写父类抽象方法的实例,那么这个类也是抽象类(这个抽象子类,直到重写这个抽象方法的实例为止, 才能摆脱抽象的命运).其实我们想想,一个类去实现一个接口也不就是一个实体子类把一个抽象的所以抽象方法实例化(重写了 抽象父类 中全部抽象方法),当然抽象类和接口还是有区别的.我上上篇就写到了抽象类和接口的区别,有兴

接口多继承自接口和接口是否可以继承自一般类的疑问?

接口是常量值和方法定义的集合.接口是一种特殊的抽象类. Java类是单继承的.classB Extends classA java接口可以多继承.Interface3 Extends Interface0, Interface1, interface-- 不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢? 但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口. 注意: 1)一个类如果实现了一个接口,则要实现该接口

C#接口多继承方法重名问题

最近实现一个功能需要继承两个接口,然而父类接口有这重名的方法,且方法实现一致.两个父接口均被多个子接口继承,并在类实例中实现.起初,我是通过new重名方法来实现我的功能调用.后被指正,在网上看了一个工友解决类似问题的方法,这里引用记录一下. 引自:http://www.cnblogs.com/xgw2004058/archive/2010/06/18/1760046.html 经常,一个类会实现多个接口,比如用户的一个控件继承自"IEdit"和"ICombo",每个

接口、接口优点、接口的属性和方法特性、接口与继承的区别、接口与抽象类的区别、匿名实现类、JDK1.8新特性、打印类名称

接口里的属性,必须是公共的/默认的&静态的&Final&初始化后的属性: 接口里所有方法都是抽象的. 接口和继承---先天有的用继承,后天学习的用接口: 接口特性-------- 1.接口不可以被实例化: 2.实现类必须实现接口中所有方法,否则实现类必须是抽象类 3.实现类可以实现多个接口,来弥补Java不能多继承: 4.接口中的变量都是静态常量:(静态的-可以通过类的名字点-直接调用:) ----------------------------------------------

类与接口的继承 接口与抽象类 抽象工厂

为什么Java里面只允许单一继承,但允许实现多个接口? 1,接口可以继承多个接口.为什么不能实现类的多继承?主要是防止多个类有相同的方法名,然而方法体不一样,子类就比较难选择了.所以java和C#不支持类的多继承2,允许具有多个接口的一个好处就是,当实现多个接口时,如果两个接口有同样的方法,那么实现一次就可以了.由于接口没有方法体,所以接口可以实现多继承. 如何间接实现类的多重继承? 1.可以通过继承多个接口实现多重继承. 2.A -> B -> C .

接口、继承、多态

接口.继承.多态 继承和多态是面向对象开发语言中非常重要的饿一个环节,如果在程序中使用继承和多态得当,整个程序的架构将变得非常有弹性,通知书可以减少代码的冗余性. 继承机制的使用可以复用一些定义好的类,减少重复代码的编写.多态机制的使用可以动态调整对象的调用,降低对象之间的依存关系. 1.继承机制中子类的结构化过程 子类的所构造函数,默认都会访问谷类中控参数的构造函数:因为,子类每一个构造行数内的第一行都由依据隐式的super(); 子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,

Java基础10 接口的继承与抽象类(转载)

接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{    void addWater(int w);    void drinkWater(int w);} 我们在继承Cup的基础上,定义一个新的有刻度的杯子的接口,MetricCup 接口如下: interface MetricCup extends Cup{    int WaterContent

java接口可以继承多个接口

接口是常量值和方法定义的集合.接口是一种特殊的抽象类. java类是单继承的.classB Extends classA java接口可以多继承.Interface3 Extends Interface0, Interface1, interface…… 不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢? 但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口. 注意: 1)一个类如果实现了一个借口,则要实现该接口

Java基础知识强化之集合框架笔记67:Map集合面试题之List,Set,Map等接口是否继承自Map接口

1. List,Set,Map等接口是否继承自Map接口? • List,Set不是继承自Map接口,它们继承自Collection接口• Map接口本身就是一个顶层接口