首页 > JAVA07 接口与继承

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 }

 

转载于:https://www.cnblogs.com/gxt-/p/6049381.html

更多相关:

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  • 本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。 NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client  1、运行WebApi项目  URL http://yourserver/swagger 然后...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...

  • 来源:公众号|计算机视觉工坊(系投稿)作者:仲夏夜之星「3D视觉工坊」技术交流群已经成立,目前大约有12000人,方向主要涉及3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、...

  • 点云PCL免费知识星球,点云论文速读。文章:Real-Time LIDAR-Based Urban Road and Sidewalk Detection for Autonomous Vehicles作者:Ern˝o Horváth  , Claudiu Pozna ,and Miklós Unger编译:点云PCL代码:http...

  • 文章:Semantic Histogram Based Graph Matching for Real-Time Multi-Robot Global Localization in Large Scale Environment作者:Xiyue Guo, Junjie Hu, Junfeng Chen, Fuqin Deng, T...

  • 点云PCL免费知识星球,点云论文速读。文章:Robust Place Recognition using an Imaging Lidar作者:Tixiao Shan, Brendan Englot, Fabio Duarte, Carlo Ratti, and Daniela Rus编译:点云PCL(ICRA 2021)开源代码:...

  • 文章:A Survey of Calibration Methods for Optical See-Through Head-Mounted Displays作者:Jens Grubert , Yuta Itoh, Kenneth Moser编译:点云PCL本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PD...

  • 假如 父类 int num =7;子类 int num =9;父类是否会被子类所覆盖? 给你看两个例子: 第一个例子:   第二个例子:   这两个例子的区别只有一句话   由此证明了子类从父类继承的时候  如果有同名的成员变量 默认情况下 父类的成员变量是被屏蔽的   如果你非要调用父类的成员变量  请使用super关键字 转...

  • 继承 一,概述 a)         使用extends关键字可以让一个类继承另一个类,继承的类为子类,被继承的类是父类,子类会自动继承父类的所有方法和属性。 b)        继承使得类和类之间产生了关系 c)        子类可以使用super调用父类成员 d)        继承的最终目的就是提高代码的复用性。 e)&nb...