JavaNote-继承特别篇

来源:互联网 发布:暴走漫画淘宝旗舰店 编辑:程序博客网 时间:2024/04/18 20:35
class Life{     public static void main(String[] args){      int alive;          while(alive)          {              eat();                sleep();              code();              repeat();      }    }}

老人说,这不丢脸,也无损真正的骄傲.

首先,在这里作一个小小的声明,此篇博客只是写给那些小白(我自己也是小白)我遇到过的一个问题,大佬们如果发现了问题,请点点你的小手指纠正一下错误,谢谢~

一.什么是属性?

有兴趣的同学可以百度一下,有的答案是属性,就是字段,也就是上面的private String a。
这里写图片描述

事实上大家都知道不是。

那么属性是什么呢?用简单的话来说就是可读、可写。

//此时的a才能被称为属性,而不是百度说的那样。public String getA() { //  获取属性a(可读)        return a;    }public void setA(String a) {   //设置属性a(可写)    this.a = a;}

二.继承中的小问题

一言不合上代码

class AAA{    private String a;    // 成员变量    private String b;    public String getA() { //  获取属性a        return a;    }    public void setA(String a) {           this.a = a;    }}class BBB extends AAA{    public String getSuperA(){        return super.getA();    }}public class ExtendsDemo {    public static void main(String[] args) {        AAA a = new AAA();        BBB b = new BBB();        b.setA("b-a");        System.out.println(b.getA()); // b-a         System.out.println(a.getA()); // null        System.out.println(b.getSuperA()); // b-a    }}

很简单的一段代码,一个BBB类继承了AAA类,BBB类有一个getSuperA的方法(伏笔),b.getA(),a.getA()的运行结果,相信大家都能够知道。

问题在于 b.getSuperA() ,BBB类中的super.getA()到底是什么?

其实解决这个问题只需要解决BBB类中的super到底是怎么回事。

想知道super到底是什么,看以下代码:

class AAA{    private String a;    // 成员变量    public String getA() { //  获取属性a        return a;    }    public void setA(String a) {           this.a = a;    }}class BBB extends AAA{    public String getSuperA(){        return super.getA();    }    public void getThis(){        System.out.println(this.toString());    }    public void getSuper(){        System.out.println(super.toString());    }}public class ExtendsDemo {    public static void main(String[] args) {        AAA a = new AAA();        BBB b = new BBB();        b.setA("b-a");        System.out.println(b.getA()); // b-a         System.out.println(a.getA()); // null        System.out.println(b.getSuperA()); // b-a        b.getHash();    // this        b.getSuperHash(); // super    }}

那么BBB类中的this,super 到底是什么呢?

这里写图片描述

也不知道有没有同学感到惊讶,我之前一直以为BBB类的super就是AAA类,其实不然,BBB类的super就是BBB类,它只不过通过父类的构造器继承了一些方法,所以b.getSuperA()结果也就是b-a了。

接下来的这些话是个人的理解,大家看看就好,如果有错,希望能够被指出。

我们假想一下,B继承了A,new 出来的B的内存空间里面有一块区域装的是通过super()接收下来的一些方法或者其他,调用super.A 其实是在操作B内存里面的数据,和父类A没有任何关系,从来没有new一个super(A)区域

与一位美丽的程序媛的聊天记录

这里写图片描述

真的,现在在一些论坛或者交流平台请教问题,很难,很被人瞧不起。请教一个问题,大佬们都是反问句。像这位我把她贴出来真的是源于感动,可能大家都不知道她是谁,可是谁在乎呢,她能代表的就是情怀。她也给我好好的上了一课,比如:Java里面是否有指针?我说的是有。她说,回答有,没错。回答没有,不全对,因为Java里面管指针叫做引用,就和管函数为方法一样,其实是一个道理,叫法不一样。以后如果别人问我这个问题,我会作以下回答:“没有,可 Java里面有引用,和指针一样。”最后说一句,希望大家不管技术的高低,都能够 “不忘初心,心怀敬畏之心,着眼于语言以外的地方。”

CNcots CN Caprice of the stone的简写, 译为石头的随想曲.

博客中有网上摘抄的资料. 有个人的一些小心得 ,有什么不对的地方, 还请各位观客老爷们指出.

JavaNote系列博客, 纯属个人学习时间段整理的一些笔记, 会坚持每周至少一更,多多关照.

原创粉丝点击