继承(Extends)
来源:互联网 发布:暴风tv直播软件 编辑:程序博客网 时间:2024/05/22 19:35
/**特性
* 同类型之间可以继承,类与类,接口与接口
* 继承只能是单一的
* 只有private修饰的属性和方法不可被继承下来(包括最终的静态的属性,静态的同步的方法)
* 子类的创建会调用父类的静态块,非静态块和构造器。
* 子类中的构造器会隐式添加super()调用父类无参构造器
*
/**继承的作用?
* 代码重用
*
/**强转
* 引用是子类和引用是子类之间的强转,是编译异常,如果没有继承关系,任何两个类之间的强转,都将是编译异常,因为
* 任何一个类的父类都是Object。
* 父类强转成子类,是运行时异常,ClassCastException
* 继承中的转换,只能是子类自动转为父类。没有强转,如果采用强转的语法去把子类转为父类,对象依然是子类。
* 可以理解为无法进行强转,但编译器也不会报错。
*
/**父子类中的静态属性,非静态属性,静态块,非静态块,构造器的执行顺序。
* 父类静态块和静态属性-->子类静态块和静态属性-->父类非静态块块和非静态属性-->
* 子类非静态块和非静态属性-->父类构造器-->子类构造器
*
/**子类创建前的操作--调用父类构造器super(有参数或者没参数)
* 子类中的构造器,无论有没有编写super(),默认都有super()这句命令。
* 该命令为调用父类默认构造器,调用构造器和调用静态方法一样会加载类,从而引发静态块和非静态块的执行。
* 但并不意味着子类的创建会带动父类的创建。但也并不说明没有创建父类。
* 如果父类定义了有参的构造器并且子类没有调用父类有参构造器,那么父类必须包含一个无参的构造器
* 因为在创建子类时,调用了构造器,而构造器默认有super()命令调用父类的无参构造。
* 在父类有参的前提下,调用无参出现编译异常。所以在子类中必须要有调用父类有参构造器的语句:super(parameters);
* 如果没有的话父类就必须有无参的构造器。
*
/**用父类引用去接受子类对象,调用子类的某个方法(该方法覆盖了父类的方法),执行的是父类的方法还是子类的方法?
* 子类,引用决定可调用的方法列表,方法的位置来源于创建的子类对象。也就是说如果子类中拥有父类没有的方法,
* 并且用父类引用去接受子类对象的时候,那么无法调用子类的该方法。如果强硬编写调用该方法,会出现undefined。
* 如果调用了父类和子类都有的方法,那么会执行子类的方法,如果子类中没有,那么会执行父类的方法。
*
/** 父类有一方法访问修饰符为protected,子类同名方法同参数,访问修饰符可否更改?(重写/覆盖)
* 以,但是访问修饰符的范围一定要比父类的访问修饰符小或者相等。如果方法抛出了异常,要么不抛异常,
* 要么异常也必须是父类所抛出异常或者其子类。重写有三不改,返回类型不能改,参数类型不能改,参数个数不能改。
* 也就是方法原型(访问修饰符,返回类型,参数,抛出的异常)要统一或兼容。
*
/**父类私有的属性如何被继承下来?
/**子类若编写了和父类同样的属性,并且继承了父类的get方法,当子类对象执行了get方法后,返回的是子类的属性还是父类的?
* 1,通过继承get方法继承下来。
* 2,父类的,子类虽然继承了父类的get,但是子类并没有覆盖父类的get方法,所以get方法是父类所有的,
* 执行的便是父类的get方法,所以获取的是父类的属性。
* extends是扩展,并不是真的去继承,super还是super的,sub还是sub的。sub可以引用super的非private的属性和方法
* 并不意味着super的属性和方法就属于sub。extends只是一个扩展,扩展super类中没有的东西或者没有实现的东西或者去覆盖
* super类的方法来满足新的业务需求。
*
* @author silone
*
*/
* 同类型之间可以继承,类与类,接口与接口
* 继承只能是单一的
* 只有private修饰的属性和方法不可被继承下来(包括最终的静态的属性,静态的同步的方法)
* 子类的创建会调用父类的静态块,非静态块和构造器。
* 子类中的构造器会隐式添加super()调用父类无参构造器
*
/**继承的作用?
* 代码重用
*
/**强转
* 引用是子类和引用是子类之间的强转,是编译异常,如果没有继承关系,任何两个类之间的强转,都将是编译异常,因为
* 任何一个类的父类都是Object。
* 父类强转成子类,是运行时异常,ClassCastException
* 继承中的转换,只能是子类自动转为父类。没有强转,如果采用强转的语法去把子类转为父类,对象依然是子类。
* 可以理解为无法进行强转,但编译器也不会报错。
*
/**父子类中的静态属性,非静态属性,静态块,非静态块,构造器的执行顺序。
* 父类静态块和静态属性-->子类静态块和静态属性-->父类非静态块块和非静态属性-->
* 子类非静态块和非静态属性-->父类构造器-->子类构造器
*
/**子类创建前的操作--调用父类构造器super(有参数或者没参数)
* 子类中的构造器,无论有没有编写super(),默认都有super()这句命令。
* 该命令为调用父类默认构造器,调用构造器和调用静态方法一样会加载类,从而引发静态块和非静态块的执行。
* 但并不意味着子类的创建会带动父类的创建。但也并不说明没有创建父类。
* 如果父类定义了有参的构造器并且子类没有调用父类有参构造器,那么父类必须包含一个无参的构造器
* 因为在创建子类时,调用了构造器,而构造器默认有super()命令调用父类的无参构造。
* 在父类有参的前提下,调用无参出现编译异常。所以在子类中必须要有调用父类有参构造器的语句:super(parameters);
* 如果没有的话父类就必须有无参的构造器。
*
/**用父类引用去接受子类对象,调用子类的某个方法(该方法覆盖了父类的方法),执行的是父类的方法还是子类的方法?
* 子类,引用决定可调用的方法列表,方法的位置来源于创建的子类对象。也就是说如果子类中拥有父类没有的方法,
* 并且用父类引用去接受子类对象的时候,那么无法调用子类的该方法。如果强硬编写调用该方法,会出现undefined。
* 如果调用了父类和子类都有的方法,那么会执行子类的方法,如果子类中没有,那么会执行父类的方法。
*
/** 父类有一方法访问修饰符为protected,子类同名方法同参数,访问修饰符可否更改?(重写/覆盖)
* 以,但是访问修饰符的范围一定要比父类的访问修饰符小或者相等。如果方法抛出了异常,要么不抛异常,
* 要么异常也必须是父类所抛出异常或者其子类。重写有三不改,返回类型不能改,参数类型不能改,参数个数不能改。
* 也就是方法原型(访问修饰符,返回类型,参数,抛出的异常)要统一或兼容。
*
/**父类私有的属性如何被继承下来?
/**子类若编写了和父类同样的属性,并且继承了父类的get方法,当子类对象执行了get方法后,返回的是子类的属性还是父类的?
* 1,通过继承get方法继承下来。
* 2,父类的,子类虽然继承了父类的get,但是子类并没有覆盖父类的get方法,所以get方法是父类所有的,
* 执行的便是父类的get方法,所以获取的是父类的属性。
* extends是扩展,并不是真的去继承,super还是super的,sub还是sub的。sub可以引用super的非private的属性和方法
* 并不意味着super的属性和方法就属于sub。extends只是一个扩展,扩展super类中没有的东西或者没有实现的东西或者去覆盖
* super类的方法来满足新的业务需求。
*
* @author silone
*
*/
0 0
- 继承(extends)
- extends 继承
- 继承(Extends)
- 继承extends
- 继承:extends
- 继承extends
- extends 继承
- 继承extends程序测试
- 继承关键字 :extends
- extends继承初步
- Ext继承Extends学习
- 笔记12 继承extends
- extends 继承问题
- 【java的继承extends】
- php继承详解 extends
- Java中继承 extends
- Java day05 继承 extends
- java继承关键字extends
- 使用node.js + express开发web应用笔记(1) - 创建工程
- 国人当自强:两岸三地在线编程学习网站大搜罗
- 如何测试TCP/IP协议栈来修复网络连接故障
- 2013回顾
- 接口(Interface)
- 继承(Extends)
- ThinkPHP3.0主入口配置,注册、登录案例
- 静态块,非静态块,静态属性,非静态属性,构造的执行顺序
- Android Notification的使用
- 基本类型及其运算
- Delphi 组件渐进开发浅谈(一)——由简入繁
- 黑马程序员--Map集合(重要的一点)
- python 数据结构
- Delphi 组件渐进开发浅谈(二)——双简合璧