java 继承详解
来源:互联网 发布:禅道部署到linux 编辑:程序博客网 时间:2024/05/23 07:25
java继承原理说明
1,子类将父类中的所有成员变量继承过来并隐藏,而且不会覆盖。
2,对于方法,子类继承过来后进行覆盖而非隐藏。
3,对于声明类型,只有该声明类型的类中定义的才可见(包过隐藏的)。
package inherit;public class TestInherit extends Father{ String str = "i am son!"; @Override public String getStr() { return str; } //只在子类中定义的变量和方法 String sonOlny = "i am difined only in son!"; public String getSonOlny() { return sonOlny; } public static void main(String[] args) { Father father = new TestInherit(); /** * 1.对于变量,子类将父类中的变量继承过来,并默认隐藏。 * 2.因为声明的是父类型的,所以默认访问的是从父类中继承过来 * 3.如果想访问子类中的,可以通过强制类型转换。 */ System.out.println(father.str); System.out.println(((TestInherit)father).str); System.out.println("----------------------"); /** * 1.对于方法,子类是并没有将父类中的继承过来隐藏,而是进行了覆盖,所以 * 不管是声明为父类型的,还是子类型的,只要是子类的实例对象,那么执行 * 的就是子类定义的方法,因为只有这个方法,没有隐藏的方法。 */ System.out.println(father.getStr()); System.out.println(((TestInherit)father).getStr()); System.out.println("----------------------"); /** * 1,因为声明是按照父类的类型来声明的,虽然是子类的实例对象,虽然包含子类中的所有方法, * 但是对于父类中没有定义的方法,对于声明为父类型的实例仍然是不可见的。 * 2,因为实例对象实际是子类对象的实例,所以它除了包含父类中的变量,还包含子类的变量和方法, * 所以仍然可以通过强制类型转换,访问子类中的不可见得方法和成员变量。 */ System.out.println(((TestInherit)father).sonOlny); System.out.println(((TestInherit)father).getSonOlny());// System.out.println( father.sonOlny); //这样会报错,不可见 System.out.println("---------------------"); /** * 1.所以综合来说,继承中,方法覆盖是特例,其余的都会直接继承过来 * 2.对象的声明,限定了对象的变量和方法的可见范围。 */ System.out.println(father.only); System.out.println(father.getOnly()); System.out.println(((TestInherit)father).only); System.out.println(((TestInherit)father).getOnly()); }}class Father{ String str= "i am father!"; public String getStr() { return str; } //只在父类中进行定义的变量和方法 String only="i only difined in father!"; public String getOnly() { return only; }}
运行结果:
i am father!i am son!----------------------i am son!i am son!----------------------i am difined only in son!i am difined only in son!---------------------i only difined in father!i only difined in father!i only difined in father!i only difined in father!Process finished with exit code 0
阅读全文
0 0
- java 继承详解
- java 继承详解
- 详解java继承
- Java 继承详解
- Java 继承详解
- Java 继承详解
- Java 继承详解
- Java 继承的详解
- Java 继承详解
- java 继承详解
- 黑马程序员---java继承详解
- Java 继承(extends)详解
- java中的继承 多态详解
- Java 继承与接口知识详解
- Java学习笔记(83)----------继承详解
- java 详解接口、继承和多态
- java基础 继承、封装、多态、抽象详解
- Java之继承,super,this详解
- 【软件测试的艺术(第三版)】读书笔记一
- order by子句
- 洛谷 2420 让我们异或吧
- Java:如何找出单链表中的倒数第k个元素
- SDUT 链表专题
- java 继承详解
- 数制转换C++ & 数据库索引
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- mysql基础知识
- Java基础:二进制转换
- kettle在win环境下安装部署
- LeetCode算法题——Generate Parentheses
- OpenCV教程 之 基础操作:图像的读入、输出、访问、Mat类、色彩缩减与线性融合
- Spring Boot学习之旅:(五)Spring Boot 使用 junit 单元测试