博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
父类的属性或者方法被private修饰过之后,子类是否能继承的问题,以及this和super的区别...
阅读量:5215 次
发布时间:2019-06-14

本文共 1855 字,大约阅读时间需要 6 分钟。

首先,继承的定义:继承是指一个对象直接使用另一对象的属性和方法

很明显,父对象被private修饰过的属性和方法,子对象无法直接使用(可以通过父类的get 、set方法间接使用)

那么根据继承的定义来判断:private修饰过的都无法被继承

得出结论之后,我自己写了一些代码进行测试。

  1.  使用继承后,父对象会随着子对象的创建而创建,根据内存加载的顺序也可以看出来。

  2.  父对象会比子对象早一步先创建:原因

      2.1  子类的构造方法第一句总是要写上父类的构造方法,用来创建父对象,因为继承是发生在对象与对象之间的,所以必须先有一个父对象,子对象再去继承父对象

  3.  随着子对象的创建完毕,内存也同时存在父对象,这个父对象只能被子对象使用,子对象通过 super 关键字调用父对象的属性和方法

  4.  如果没有重写属性和方法,那么子对象里面实际上并没有一个真正属于 "自己" 的属性和方法,所以此时我们无论用 this 或者 super ,调用的都是父对象的东西,也就是说关键词写不写都无所谓,反正引用的都是同一个内存地址

  5.  发生重写后,子对象从实际上拥有了属于 "自己" 的属性和方法,所以这时候我们必须使用 this 和 super 关键字来区分到底使用谁的数据

 

public class Test01 {    public static void main(String[] args) throws CloneNotSupportedException {        //创建子对象        B b = new B();                    //调用子对象的t1方法        b.t1();    }}//父类class A {    private int test = 7;        String name;    int age;    A(String name) {        this.name = name;    }}//子类class B extends A {    int test = 8;        //重写age后,子对象拥有属于自己的age    int age;    B() {                // 创建父类对象,父对象初始化 name = "小明"        super("小明");     }    void t1() {                // 小明        System.out.println(super.name);                 // 小明   从这里可以看出继承是先有父对象,子对象使用或继承(复制)父对象的name,        //      但是我们还不能判断子对象是复制还是直接调用父对象的name。        System.out.println(this.name);                                                     this.name = "小红";                 // 小红 这里表示,this.name和super.name是同一个变量,也就是说继承之后,父对象的属性和对象可以被子对象调用        System.out.println(super.name);                super.age = 1;        this.age = 2;                //    1    父对象age并没有被修改        System.out.println(super.age);                //    2    这里显示的是子对象自己的age        System.out.println(this.age);                //super.test报错(被private保护了)        //System.out.println(super.test);                //this.test可用        System.out.println(this.test);    }}

 

转载于:https://www.cnblogs.com/Peter-Yu/p/9992278.html

你可能感兴趣的文章
Python字典实现分析
查看>>
jenkins+testNG
查看>>
Java自定义范型的应用技巧
查看>>
[洛谷1485] 火枪打怪
查看>>
白话经典算法系列之六 快速排序 快速搞定
查看>>
错了:用流量能够放肆,有wifi则要节制
查看>>
https://zhidao.baidu.com/question/362784520674844572.html
查看>>
【MFC 学习笔记】CFile读写文件
查看>>
PAT B1018.锤子剪刀布(20)
查看>>
Extjs控件之 grid打印功能
查看>>
枚举类型(不常用)递归
查看>>
ETL
查看>>
Tomcat源码分析(六)--日志记录器和国际化
查看>>
今天把csdn的博客搬家到博客园
查看>>
D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......
查看>>
基于网络的 Red Hat 无人值守安装
查看>>
Mybatis第六篇【配置文件和映射文件再解读、占位符、主键生成与获取、Mapper代理】...
查看>>
MySQL学习笔记(二):MySQL数据类型汇总及选择参考
查看>>
jQ 移动端返回顶部代码整理
查看>>
博客园界面美化
查看>>