java-继承
来源:互联网 发布:收购淘宝店铺骗局 编辑:程序博客网 时间:2024/06/06 04:49
概念:
继承在本职上是特殊——一般的关系,即常说的is-a关系。子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。
继承中的初始化顺序:
从类的结构上而言,其内部可以有如下四种常见形态:属性(包括类属性和实例属性)、方法(包括类方法和实例方法)、构造器和初始化块(包括类的初始化块和实例的初始化块)。继承中的初始化顺序为:父类属性-->父类代码块(初始化)-->父类构造方法-->子类属性-->子类代码块(初始化)-->子类构造方法
Java类具有三种访问控制符:private、protected和public,同时当不写这三个访问控制符时,表现为一种默认的访问控制状态。因此,一共具有四种访问控制级别。
具体访问控制表现如下:
private修饰的属性或方法为该类所特有,在任何其他类中都不能直接访问;
default修饰的属性或方法具有包访问特性,同一个包中的其他类可以访问;
protected修饰的属性或方法在同一个中的其他类可以访问,同时对于不在同一个包中的子类中也可以访问;
public修饰的属性或方法外部类中都可以直接访问。
当子类继承父类,子类可以继承父类中具有访问控制权限的属性和方法(一般来说是非private修饰的),对于private修饰的父类所特有的属性和方法,子类是不继承过来的。
当子类需要改变继承过来的方法时,也就是常说的重写父类的方法。一旦重写后,父类的此方法对子类来说表现为隐藏。以后子类的对象调用此方法时,都是调用子类重写后
的方法,但子类对象中想调用父类原来的此方法时,可以通过如下两种方式:
1.将子类对象类型强制转化为父类类型,进行调用;
2.通过super调用。
同样的,如果在子类中定义父类中相同名称的属性时,父类属性在子类中表现为隐藏。
继承中的this和super:
构造器中的this表示当前正在初始化的对象引用,方法中的this表示当前正在调用此方法的对象引用。this具体用法表现在一下几个方面:
1.当具多个重载的构造器时,且一个构造器需要调用另外一个构造其,在其第一行使用this(param)形式调用,且只能在第一行;
2.当对象中一个方法需要调用本对象中其他方法时,使用this作为主调,也可以不写,实际上默认就是this作为主调;
3.当对象属性和方法中的局部变量名称相同时,在该方法中需要显式的使用this作为主调,以表示对象的属性,若不存在此问题,可以不显式的写this。
其实,其牵涉到的一个问题就是变量的查找规则:先局部变量 => 当前类中定义的变量 => 其父类中定义的可以被子类继承的变量 => 父类...
super表示调用父类中相应的属性和方法。在方法中,若需要调用父类的方法时,也一定要写在第一行
继承与组合:
从单纯的实现效果上看,继承和组合都能达到同样的目的。并且都是实现代码复用的有效方式。
但在一般性的概念层次中,两者具有较为明显的差别。
继承表现为一般——特殊的关系,子类是一个特殊的父类,是is-a的关系。父类具有所有子类的一般特性。
组合表现为整体——部分关系,即has-a关系。在组合中,通过将“部分”单独抽取出来,形成自己的类定义,并且在“整体”
这个类定义中,将部分定义为其中的一个属性,并通过get和set方法,以此可以调用“部分”类中的属性和方法。
- Java继承
- JAVA-继承
- java 继承
- Java继承
- Java 继承
- JAVA继承
- java继承
- java/继承
- java 继承
- java继承
- java继承
- JAVA-继承
- Java继承
- java 继承
- JAVA 继承
- 【继承】 JAVA
- Java继承
- Java继承
- 找第一个只出现一次的字符
- Hash Table
- centos7 下使用 noVNC
- hdu 6113 度度熊的01世界
- thinking
- java-继承
- Springmvc的拦截器
- 算法的时间复杂度和空间复杂度-总结<转载>
- 练习1-1 在你自己的程序中运行“hello,world”程序。再有意去掉部分内容,看看会得到什么错误信息。
- position属性值(面试必考)
- 努力的回报1
- 手游服务端框架之使用事件驱动模型解决业务高耦合
- 2017.08.14总结
- 【黑科技】用树状数组解决区间修改查询问题