2016.11.11继承与接口

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 TestInherits {

    public static void main(String args[]) {
        Child c = new Child();

    }
}

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

子类必须先调用父类的构造方法是因为:

构造函数(constructor)是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。

构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。不能反过来调用也是这个原因,因为父类根本不知道子类有什么变量而且这样一来子类也得不到初始化的父类变量,导致程序运行出错!

不允许继承的类:   final class 类名{

}   以final声明的方法不允许覆盖。   以final声明的变量不允许更改。   利用final,可以设计出一种特殊的"只读"的"不可变类"。
public class ExplorationJDKSource {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new A());
    }

}

class A{}

示例中,main方法实际上调用的是:


public void println(Object x),这一方法内部调用了String类的valueOf方法。


valueOf方法内部又调用Object.toString方法:


public String toString() {


return getClass().getName() +"@" +


Integer.toHexString(hashCode());


}


hashCode方法是本地方法,由JVM设计者实现:


public  native int hashCode();

方法覆盖:
class Parent extends Grandparent {

    public int add1(){
        return 1;
    }
}


class Child extends Parent {

    public int add1(){
         return 2;
    }
    public int  superadd1(){
        return super.add1() ;  

    } 

}
结论:方法覆盖要求子类与父类的方法一模一样,否则就是overload(重载)。      在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。       1.覆盖的方法允许访问范围不能小于原方法。       2.覆盖方法所抛出的异常不能比原方法更多。       3.声明为final方法不允许覆盖。 例如,object的getclass()方法不能覆盖。       4.不能覆盖静态方法。

抽象类:


1.abstract修饰的类称为“抽象类”,它只定义了什么方法应该存在,不能创建对象,必须派生出一个子类,并在子类中实现其未实现的方法之后,才能使用new关键字创建对象。


在方法前加上abstract就形成抽象方法,只有方法声明,没有实现代码


2.从抽象类继承的子类必须实现父类的所有抽象方法,否则,它仍然是抽象类


3.以下模式总是成立的:


抽象类  抽象类变量 = new  派生自抽象类的具体子类();

接口:

1.定义一个接口,采用关键字interface,实现一个接口,采用关键字implements

2.接口的成员函数自动成为public的,数据成员自动成为static和final的。

3.如果接口不声明为public的,则自动变为package。

4.一个类可以同时实现多个接口。

5.接口类型  接口类型的变量=new 实现了接口的具体类型()。

接口的扩充:

1.可以通过继承接口来扩充已有接口,并形成一个新的接口。

   interface OneInterface {
void f1();
}
interface TwoInterface extends OneInterface {
void f2();
}

2.实现子接口的类,必须实现“父”“子”接口所定义的所有方法,才能被实例化(即new出一个对象)。

接口与抽象类的区别:

1.抽象类是一个不完全的类,而接口只是表明类应该具有哪些“外部”特征,不涉及任何实现细节。

2.接口基本上不具备继承的任何具体特点,它仅仅承诺了外界能够调用的方法。

3.一个类一次可以实现若干个接口,但一个类只能继承一个父类。

				
时间: 2024-10-07 06:39:31

2016.11.11继承与接口的相关文章

第八章 交互技术,8.3 2016双11前端突破(作者:天猫前端团队)

8.3 2016双11前端突破 前言 2016 年天猫前端相比去年有了非常多不同维度的突破,主要可以分为四大类大类: 稳定性.监控 极致的性能优化 业务创新 / 平台建设 技术创新 / 互动 1. 稳定性.监控 商品到每个用户浏览的每个环节都有监控,尤其在针对消费者体验上的 TES,让前端在消费者真实浏览的过程当中也能够有更进一步的分析在不同环境下消费者实际的体验.以及从服务器 Wormhole 渲染层进行了一系列的稳定性.监控. 1.1 Wormhole双11会场稳定性保障 Wormhole承

[野狐行][2016/04/11][群直播系列2][那些年让我们郁闷不已的游戏保护]

最近应广大朋友的建议,增加群内直播系列,主要内容包括不仅限于“辅助行业探讨,内幕揭秘,行业八卦”.每周周末,群内直播系列:1.2016/04/02 第一期下载地址: http://pan.baidu.com/s/1bpnwPeZ 2.2016/04/11 第二期下载地址: http://pan.baidu.com/s/1nvs22xj

2016/3/11 随笔一

最近开始找工作,也加了不少找工作的群,看见很多人在问我是二本的,在简历关会被筛吗.我在哪个 哪个方面比别人有劣势,我有希望吗?当看到某某三本的同学进了BAT,又焕发斗志,觉得自己也行,赶紧向别人取经.觉得自己好好努力也行了. 从这里我们可以抽象出一种人类某个方面的模型出来,大部分人只看到了自己的劣势,然后在进入任何组织的时候都会问,我这个方面有劣势,我会有机会吗.当看到同样在这个方面有劣势的或者比自己更差的人却成功的进入了某个热门组织的时候.又新生希望,在想那小子都进了,我肯定也没问题.但结果可

阿里巴巴2016双11背后的技术(不一样的技术创新)

每年的"双11"是阿里技术的大阅兵和创新能力的集中检阅.2016年的"双11"背后,更是蕴藏了异常丰富的技术实践与突破. 历经1个月的编写,最终27篇精华技术文章入册<不一样的技术创新-阿里巴巴2016双11背后的技术>(以下简称<不一样的技术创新>)一书.这27篇"24K纯度"的技术干货,是阿里"双11"八年来技术演进结果的最新展示,凝聚了阿里工程师的智慧和创造力. 所有参与<不一样的技术创新&

无需任何软件!斐讯K2 V22.x.xx.xx版本刷机教程(2016年11月更新)

斐讯 斐讯K2 V22.X.X.X 新版固件 刷机教程 (开telnet,安装SSH,adbyby,刷breed,华硕Padavan) 基本属于无脑操作,点击恢复就可以自动刷好breed,浏览上传新固件就完成刷机,理论上能认识字就会刷. 支持的版本:V22.3.15.128V22.3.15.232V22.3.17.148V22.4.2.8V22.4.2.9 V22.4.5.39(需降级) 2016年11月11日目前最新版本是 V22.4.5.39. 将来更高的版本支持不支持取决于斐讯的封堵速度.

【英语学习】2016.09.11 Culture Insider: Teacher&#39;s Day in ancient China

Culture Insider: Teacher's Day in ancient China 2016-09-10 CHINADAILY Today is the 32nd Chinese Teacher's Day – a festival celebrating the 2,300-year tradition of respecting teachers and education in China. It's similar to the birthday of Confucius o

2016.11.11~12,热烈庆祝杨学明老师《软件测试管理》深圳公开课成功举办!

2016年11月11日至12日,在深圳南山科技园创新谷咖啡二楼会议室,研发管理资深专家和首席测试专家杨学明先生公开课成功举办!本次公开课就软件测试的问题进行研讨和交流.杨学明老师就软件测试工程过程.测试项目管理.测试组织与团队.测试技术和团队.软件敏捷测试技术.打造高效的测试体系等等,两天的培训过程中大家十分积极投入,气氛十分轻松,此次培训有多家来自内地的高科技企业参加.

struts2练习时犯的错误(2016年11月4日)

1.Tomcat启动时报错 严重: 文档无效: 找不到语法. at (null:3:8) org.xml.sax.SAXParseException; systemId: file:/F:/Program%20Files%20(x86)/Tomcat%206.0/webapps/struts2_11_4/WEB-INF/classes/struts.xml; lineNumber: 3; columnNumber: 8; 文档无效: 找不到语法. 错误原因:struts.xml中忘记写<!DOC

黑马程序员——JAVA学习笔记四(继承、接口、内部类)

1,    通过extends关键字让类与类之间产生继承关系.多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需定义这些属性和行为,只要继承那个类即可,已存在的类叫做超类,基类,或父类.新类称为子类,派生类,孩子类. 子类可以直接访问父类中的非私有的属性和行为.子类无法继承父类中私有的内容.JAVA不支持多继承,只支持单继承,多实现. 继承提高了代码复用性,让类与类之间产生了关系.为多态提供了前提. 2,    super关键字代表父类中成员变量内存空间的标示.两个作用

11.10/11.11/11.12 安装PHP511.13安装PHP7

- 11.10/11.11/11.12 安装PHP5 - 11.13 安装PHP7 - 扩展 - php中mysql,mysqli,mysqlnd,pdo到底是什么 - http://blog.csdn.net/u013785951/article/details/60876816 - 查看编译参数 http://ask.apelearn.com/question/1295 # 11.10安装PHP5 上 -  PHP官网www.php.net -  当前主流版本为5.6/7.1  1.   c