Java继承

来源:互联网 发布:淘宝装修海报放在 编辑:程序博客网 时间:2024/05/22 16:59

一、继承的理解:

继承是面向对象的三大特性之一,是java中实现代码重用的重要手段之一。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。

二.继承相关

1.子类继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包中。
2.继承默认权限修饰符(friendly)修饰的属性和方法,但子类和父类必须在同一个包中。
3.无法继承private修饰的属性和方法。
4.无法继承父类的构造方法。
5.子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
6.子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量被隐藏

三、访问修饰符访问权限。

四.子类满足重写父类方法的要求。

  1. 重写方法和被重写方法必须具有相同的方法名。
  2. 重写方法和被重写方法必须具有相同的参数列表。
  3. 重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。
  4. 重写方法不能缩小被重写方法的访问权限。

五.重写方法和重载有什么区别和联系。

解析:重载涉及同一个类中的同名方法,要求方法名相同,要求参数列表不同,与返回值类型,访问修饰符无关,而重写涉及的是子类和父类之间的同名方法,要求方法名称相同,参数列表相同,
返回值类型相同,访问修饰符不能严于父类。

六、继承静态成员的细节

1、Java是否可以继承静态成员

答案是可以,看下面的代码



编译器没有报错,而且可以直接通过 子类名.静态方法 的方式调用静态函数,说明父类的静态函数被继承了下来。
此外还要注意: 父类的静态成员函数同样可以被子类的同名成员函数覆盖。
另外看下面代码,思考下输出是什么?


答案是father father
解析:两个类的静态printValue方法在内存中是固定的,占用了不同的内存空间,具体调用哪一个的根据市哪一个类的引用来调用,两个引用 father child的引用都是Father类,所以自然两个输出都是father

七、super关键字的用途。

super代表对当前对象的之前直接父类对象的默认引用。在子类中可以通过super关键字来访问分类的成员。
注意点:
1.super必须出现在子类(子类的方法和构造方法)中,而不是其他位置。
2.可以访问父类的成员,如父类的属性,方法,构造方法。
3.注意访问权限的限制,如无法通过super访问private成员。
相关博客:继承容易犯的错误

0 0
原创粉丝点击