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系列博客, 纯属个人学习时间段整理的一些笔记, 会坚持每周至少一更,多多关照.