面向对象之继承

本文详细解析了Java中的继承机制,包括成员变量、成员方法和构造器的继承规则,以及多态性和对象类型转换等内容。

1. 一个类是由三部分组成的:成员变量、成员方法、构造器

2. 继承中成员变量有关的问题:

   2.1 子类不会继承父类中的私有成员变量;子类会继承父类中的非私有的成员变量;

   2.2 如果子类需要访问父类中的私有成员变量,怎么实现?--可能过父类的读写器来调用

   2.3 如果子类中声明的成员变量与父类中的成员变量名相同,则会覆盖掉继承过来的成员变量。"变量覆盖"

--要绕过这种变量覆盖,也可以使用super关键字

3. 继承中成员方法有关的问题:

   3.1 子类不会继承父类中的私有成员方法;子类可以继承父类中的非私有的成员方法;

   3.2 子类中的方法和父类中的方法同名,称为“方法重写” ->"方法覆盖"

       如果想绕过方法覆盖,怎么办?(想调用超类中被覆盖的方法) -- 使用super关键字

   3.3 @Override注解

   3.4 在方法继承中,子类中重写的方法的访问权限,不能小于超类中被覆盖的方法的访问权限。

   3.5 如果子类中有与父类中同名的方法,但方法签名不同,这实际上是“方法重载”

   3.6 当然了,在子类中,也可以增加自己新的方法。

4. 继承中的构造器有关的问题:

   4.1 构造器无法被继承

   4.2 构造器主要是用来对成员变量进行初始化(其它还包括加载资源、建立网络连接....)

       --通过super()来调用超类的构造器,完成对从超类中继承过来的成员的初始化

   4.3 如果不指定的话,默认子类的构造器会首先调用超类的无参数构造器。

   4.4 对super的调用必须是构造器中的第一个语句

   4.5 如果有多重继续的话,就会形成构造器链

5. Java中,所有的类都是Object的类的子类。如果一个类,没有明确指定其父类,那么默认它就是从Object类继承过来的。

   一个子类只能有一个直接父类(单继承)。但是可以有多个间接的超类。

   子类会继承它所有的超类(直接的和间接的)当中可以继承的成员。

6. 静态成员在继承时需要注意的问题

   6.1 当子类中有与父类中相同的静态成员变量时,子类中的静态变量会“隐藏”超类中的静态变量。隐藏变量的值,以声明的类型为准。

   6.2 当子类中有与父类中相同的静态成员方法时,子类中的静态方法会“隐藏”超类中的静态方法。

7. 对象类型转换

   7.1 某个子类继承自某个超类,那么可以这样说:它有两个数据类型,一个是自身的类型,一个是其超类的类型。

   7.2 在使用对象类型转换时,最好是使用instanceof关键字,判断一下该对象的实际类型

8. 多态

   同一个对象,在不同的时候执行相同的方法,却表现出不同的行为。

--------------------------------------------------------------------------------------------------------------------------------------------

以上来自我的老师

继承其实就是把不是自己的变为自己的。

当类B继承了类A,其实是把A中所有东西复制到B中,但是B只能访问父类A中共有的属性和方法,但是A不能够访问B中任何东西。

一下是一个实例:

class A{

static int a = 3;

int k = 2;

}


class AA extends A{

static int a = 5; //变量隐藏

int k = 4;

}


public class Demo12{

public static void main(String[] args){

AA aa = new AA();

System.out.println(aa.a); //5

System.out.println(aa.k); //4


A a = new A();

System.out.println(a.a); //3

System.out.println(a.k); //2



A aaa = new AA(); //向上转型

System.out.println(aaa.a); //3   

System.out.println(aaa.k); //2

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值