danlyalex的专栏

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

一。继承首先看下下面的代码class A {public void show() {System.out.println("show");}}

class B {public void show() {System.out.println("show");}}

class C {public void show() {System.out.println("show");}}上面的三个类中的代码是一样的。这个时候定义三个类的做法不是很好。那么,我们就这样想了一下:把这三个类中的相同的内容给提取到一个类中,然后,让这三个类和提取出来的这个类产生一个关系,有了这个关系后,这三个类就具备这个类中的内容。

这种关系:继承。继承这个东西,在java中怎么表示的呢?extends关键字就可以表示继承。

那么,定义一个和另外一个类产生这个关系的格式是什么样子的呢?class Zi extends Fu {….}

通过继承的思想来吧开始的代码改进下:class D {public void show() {System.out.println("show");}}

class A extends D {}class B extends D {}class C extends D {}

1、java中的继承特点:A:Java中类的继承只能是单继承。相对于C++:多继承:可以同时有多个父类。B:Java中可以多层继承。

注意:子类只能继承父类的非私有成员。

叫法:被继承的类:父类,基类,超类继承其他类的类:子类,派生类

class GrandFather { public void show() { System.out.println("GrandFather"); } private void test() { System.out.println("test"); }}class Father extends GrandFather { public void method() { System.out.println("Father"); }}class Mother {}class Son extends Father {}//这种写法是错误的//class Son extends Father, Mother {}class FatherDemo { public static void main(String[] args) { Son s = new Son(); s.show(); s.method(); //s.test(); }}

2、继承间的成员方法的关系:子类对象访问方法的时候,首先在子类中找。如果没有,再在父类中找。如果还没有,就报错。

注意:父类的对象不能使用子类的功能。

class Fu {/*public void show() {System.out.println("fu show");}*/}class Zi extends Fu {public void method() {System.out.println("zi method");}public void show() {System.out.println("zi show");}}class Test{public static void main(String[] args) {//Fu f = new Fu();//f.show();//f.method();Zi z = new Zi();z.show();z.method();}}

3、在子类的方法中使用变量:A:找本方法中的局部位置。B:找本类中的成员位置。C:找父类中的成员位置。D:同C。E:找不到,报错。

子类中的成员变量和父类中的成员变量名称问题:A:名称不一样。B:名称一样。

super:代表的是父类的存储空间标识。可以理解为了父亲的对象.

class GrandFather {public int num = 1000;}  class Father extends GrandFather {public int num = 10;}class Son extends Father {public int num = 100;public int num2 = 20;public void show() {System.out.println(num);System.out.println(num2);//System.out.println(num3); //找不到符合}public void method() {int num = 1;System.out.println(num); //输出局部范围的numSystem.out.println(this.num); //输出成员范围的numSystem.out.println(super.num); //输出父类成员范围的num}}class FatherDemo {public static void main(String[] args) {Son s = new Son();s.show();s.method();}}

构造方法间的关系:子类的构造方法都会首先去执行父类的构造方法。默认执行的父类的无参构造方法。

为什么呢?用于子类访问父类数据的初始化。

只要你看到了extends关键字:那么,在初始化数据的时候,肯定先初始化父类的数据,然后才初始化子类的数据。

4、构造方法间的关系:子类的构造方法都会首先去执行父类的构造方法。默认执行的父类的无参构造方法。

为什么呢?用于子类访问父类数据的初始化。只要你看到了extends关键字:那么,,在初始化数据的时候,肯定先初始化父类的数据,然后才初始化子类的数据。

我用之前做的小游戏的方法类来做父类。新创个子类Son,

一旦有了意志,脚步也会轻松起来。

danlyalex的专栏

相关文章:

你感兴趣的文章:

标签云: