> class Thing > { > //whatever > } > 与 > class Thing extends Object > { > //whatever > } > 是同样的。
子类继承父类的成员变量。html
当子类继承了某个类以后,可使用父类中的成员变量,可是不是彻底继承父类中的成员变量。规则以下:
1.可以继承父类的public和protected成员变量;不可以直接继承父类的private成员变量;//protected修饰符封装性介于public与private之间。声明为protected可见性变量和方法除了可被子类引用外,还能够由同一个包内的任何类使用
2.对于父类的包访问权限成员变量,若是子类和父类在同一个包下,则子类可以继承;不然,子类不可以继承;
3.对于子类能够继承的父类成员变量,若是在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。若是要在子类中访问父类中同名成员变量,须要使用super关键字来进行引用。java
子类继承父类之中的方法。git
一样的,子类也并不是彻底的继承父类中的方法,规则以下:
- 可以继承父类的public和protected成员方法;不可以直接继承父类的private成员方法;
- 对于父类的包访问权限成员方法,若是子类和父类在同一个包下,则子类可以继承;不然,子类不可以继承;
- 对于子类能够继承的父类成员方法,若是在子类中出现了同名称的成员方法,则称为覆盖现象,即子类的成员方法会覆盖掉父类的同名成员方法。若是要在子类中访问父类中同名成员方法,须要使用super关键字来进行引用。
> class A { > public A (String msg) { //父类的构建 > System.out.println("*********************"); > } > } > > > class B extends A { > public B() { //子类的构造 > System.out.println("####################"); > } > } > > > public class TestDemo { > public static void main(String []args) { > B b =new B(); //实例化子类对象 > } > } > 运行结果: > ****************************** > ############################## //这个时候虽然实例化的是子类对象,可是发现它会默认先执行父类构造,调用父类构造的方法体执行,然后再实例化子类对象,调用子类的构造方法。而这个时候,对于子类的构造而言,就至关于隐含了一个super()的形式.
3.super主要有两种用法:编程
1.super.成员变量/supe.成员方法;
2.super(parameter1,paremeter2, ... );
第一种用法主要用来在子类中调用父类的同名成员变量或者方法;第二种主要用在子类的构造器中显示地调用父类的构造器,要注意的是,若是是用在子类构造器中,则必须是子类构造器的第一个语句。数组
> public class Person { > private String name;//name是私有的!!! > public Person(String name) > { > this.name=name; > } > public String getName() > { > return name; > } > > > public class Student extends Person { //Student类继承Person类 > private int id; > public Student(String name, int id) > { > super(name) > this.id = id ; > } > }//Student类内没name字段,可是它内部Person对象有,咱们如何把它钓出来呢? > > > public static void main(String []args) { > Student s = new Student("你爸爸",99); > System.out.println(s.getName()); //结果就是:你爸爸 > System.out.println(s.name); //此时出现错误:ERROR:name has private access in Person. > } //咱们不能够直接的获得name,可是能够间接的获得他
问题1解决方案:数据结构
出现这种状况我猜缘由可能有两个:
- 根本就没有运行投硬币方法,致使值一直为初始值0.
- 运行了投硬币方法,且投出反面0后其余硬币也随之赋值为0.
解决这个问题我想只要多运行几回就行,若是一直都是反面那么久能够排除第二种状况了(由于只要投了,就会有正面的状况出现。除非你踩到狗屎了!)试了几回后能够肯定是状况一了。可是问题出在哪里呢?子类代码:
运行代码:
想了许久发现上面两种状况都不是,是由于没有进行赋值!!!
才致使它的值一直为初始值0学习
问题2:在作PP9.3的时候出现两个问题:
- 1.我想用数组表示图书、小说、杂志、学术刊物。
java > int [] list ={1,2,3,4}; //数组初始值表里面能够直接放数字,那我可不能够这样呢? > String [] list ={books, novel, magazine, journal };
答案是否认的!
出现:
出现上述错误是由于未对里面的元素进行初始化,只须要:
- 2. 预期的输出结果是:
> books 有 100 页, 且有 200 个关键词。
> noval 有 200 页, 且有 300 个关键词。
> ...this
输出的的地址,咱们应该编写一个方法让要表示的表示出来。即:toString()的方法才会出现预期的效果:
错题1及缘由,理解状况:
设计
对于第一种状况,a和b都将被声明 成数组。对于第二种,c和d都将被声明成整数,但对于d,他将被声明成数组。3d
错题2及缘由,理解状况:
"="是个复制运算符,他会将右边的赋值给左边。当数组a与b中的每一个元素都同样时,返回true,不然false.
错题3及缘由,理解状况:
数组是对象,所以它们从对象类继承。对象类有一个toString方法。可是,对象的toString方法不返回存储在对象中的值,而是返回引用变量的值。所以,在数组中使用的toString不会返回存储在数组中的值,而是返回一组毫无心义的字符。
错题4及缘由,理解状况:
索引只能时天然整数!!!!
错题5及缘由,理解状况:
ArrayList是做为数组实现的,只要其中一个只是访问ArrayList的元素,效率与数组的效率是同样的。可是,当对ArrayList的前部分进行插入或删除时,就会发生大量的元素复制,从而下降其效率。
博客中值得学习的或问题:
- 优势:
- 博客版面比起上一次有很大的进步,可见花功夫之深。
- 排版精美,课本总结简短、有条理。
- 提出的问题结合课本以及之前的内容,值得学习。
- 值得改进的地方:
- 没有本周代码量的图片。
- 背景不太建议选深色的,有些字都不太能看清楚。虽然很好看,
基于评分标准,我给本博客打分:14分。(总分16分)
这章比起前一章学起来比较吃力,我的感受是这一章的东西太抽象化实际上是本身的功力不够啦。这章还真有抽象类、抽象方法/(ㄒoㄒ)/~~虽然这章难,但我不会让本身放弃的!这周的任务比较繁重,由于比平时多了五个实验。实验都是些之前没接触到的东西,让我印象最深入的是实验四,由于为了它,我熬夜到了两点,发誓不弄好它不睡觉!!这个实验让我明白了toString()方法的重要性,也让我解决了上面PP9.3之前不能解决的问题。哈哈哈~~贼开心!
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 075/200 | 1/1 | 05/20 | |
第二周 | 560/500 | 1/2 | 13/38 | |
第三周 | 972/1000 | 1/4 | 21/60 | |
第四周 | 694/1666 | 1/5 | 21/90 | |
第五周 | 1544/3095 | 1/6 | 30/90 | |
第六周 | 600/3627 | 1/7 | 30/120 | |
第七周 | 544/4200 | 2/9 | 20/140 |