super一些要点

package o6;

class Grandparent
{
    public Grandparent()
    {
        System.out.println("GrandParent Created.");
    }
    public Grandparent(String string)
    {
        System.out.println("GrandParent Created.String:"+string);
    }
}
class Parent extends Grandparent
{
    public Parent()
    {
        super("Hello.Grandparent.");
        System.out.println("Parent Created");
        //super("Hello.Grandparent.");
    }
}
class Child extends Parent
{
    public Child()
    {
        System.out.println("Child Created");
    }
}
public class TestInherists {
    public static void main(String args[])
    {
        Child c=new Child();
    }
}

其结果为:

若把上面绿色注释取消,如下

class Parent extends Grandparent
{
    public Parent()
    {

        System.out.println("Parent Created");
        super("Hello.Grandparent.");
    }
}

就会报错

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

this 和 super有区别,this用于此类,而super用于父类,若没写super,系统将默认进行super,若写了,则必须放在第一个语句

时间: 2024-10-06 00:59:19

super一些要点的相关文章

super 要点

class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:"+string); } } class Parent extends Grandparent { public Parent

RecyclerView使用要点

RecyclerView是一种列表容器, 发布很久了, 才想起来写点什么. RecyclerView相比于ListView, 在回收重用时更具有灵活性, 也就是低耦合, 并且提供了扩展. 加载多个视图时, 应该多用RecyclerView代替ListView. 那么我们来看看这东西应该怎么用? 比如生成一个瀑布流的视图. 首先我们从一个HelloWorld写起, 看看如何构建一个RecyclerView. 1. 依赖库 Gradle配置, 添加Recycler库 compile 'com.and

android开发要点

[1]Activity的生命周期 Activity作为android系统的表现层组件有着至关重要的地位,因为他直接和用户接触.一个Activity在被创建和销毁的过程中经历了7个过程,他们分别是oncreat(activity创建后第一个被调用的函数),onstart(当activity显示在界面上的时候被调用),onrestart(从停止到活动调用),onresume(能够和用户进行交互的时候调用),onpause(进入暂停态的时候被调用),onstop(进入停止态的时候被调用),ondest

类的初始化分析要点代码

分析要点: 1.初始化:类型(枚举,结构,类)的实例在构建过程中得一系列过程 2.初始化的主要目的:对内部的存储属性赋值 3.结构:如果不自觉添加初始化,会自动添加默认init和memberwise init 类的初始化:代码如下 class YY { var i:int// 会报错,因为没有初始值(存储属性) } //NN没有构造器 class NN{ var i:int init(a:int){i=1} } //黄金规则1:实例化之后所有的存储属性必须有值(两种赋值方法) //专门(特定)的

Objective-C 2.0 基础要点归纳

本文的阅读基本条件: 具备C/C++基础知识,了解面向对象特征 阅读过<Objective-C 2.0 程序设计(第二版)>.<Objective-C 程序设计 第6版>或相关基础OC书籍 参考资源: 1.<Effective Objective-C2.0> 2. <Objective-C 2.0 程序设计(第二版)>/<Objective-C 程序设计 第6版> 3. http://www.cnblogs.com/pengyingh/artic

接口与继承:方法覆盖(super)

源代码 //父类Parent class Parent{ int x; int y; Parent() { x = 0; y = 0; } public void Set(int a,int b) { x = a; y = b; } } //子类Child继承了Parent class Child extends Parent{ int z; Child() { super();//使用父类的构造方法初始化 z = 0; } public void Set(int a,int b)//与父类相同

Servlet开发要点

1. Servlet开发要点 1.1. 重定向 1.1.1. 什么是重定向 在服务器为浏览器提供响应时,回传的数据包中的状态行里面是302状态码,同时在消息头内会增加一个键值对,名称为Location,值是一个新的URL地址.当这个响应到达浏览器的时候,这一次的请求响应过程并未结束,浏览器遇见302状态码之后,会立即按照Location头信息中指定的URL地址发送新的一个请求,这样一个在接到响应后又立即发出请求的过程叫做重定向.对于客户端用户来讲,中间的变化过程不会被察觉,因为这个过程是由浏览器

OC-内存管理的一些要点

创建一个BOOK对象,对其属性进行声明 定义. @property 属性声明 定义了对属性的赋值 -(void) dealloc 方法在对象销毁的时候进行调用: #import <Foundation/Foundation.h> @interface Book : NSObject @property (nonatomic,assign) int price; @end #import "Book.h" @implementation Book -(void)dealloc

self与super的区别

要点: self调用自己方法,super调用父类方法 self是类,super是预编译指令 [self class]和[super class]输出是一样的 self和super底层实现原理: 当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找:而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法. 当使用 self 调用时,会使用 objc_msgSend 函数: id objc_msgSend(id theReceiver, SEL