面向对象之继承

  • 格式:pdf
  • 大小:210.56 KB
  • 文档页数:4

面向对象之继承知识点讲解
1.继承的概念:“继承”是面向对象软件技术当中的一个概念。

如果一个对象
a继承自另一个对象b,就把a称为b的子对象,b称为a的父对象。

例如:class Fruit{
//String name = "fruit";
}
class Apple extends Fruit{
String name = "apple";
}
像这种从一个对象派生出子对象,而子对象可以拥有父对象的属性和功能,这种现象就成为对象的继承。

2.继承的功能:继承可以使子对象具有父对象的属性和方法,而不需要再次
编写相同的代码,当然在令子对象继承父对象的同时,可以重新定义某些属性,并重写某些方法,即覆盖父对象的原有属性和方法,使其获得与父对象不同的功能。

3.Java是单继承的,意味着一个类只能从另一个类继承(被继承的叫做父类
【基类,bass class】,继承的类叫做子类),java中的继承使用extends 关键字。

4.
5.当生成子类对象时,java默认首先调用父类的不带参数的构造方法,然后
执行该构造方法,生成子类的对象,【要想生成子类的对象,首先需要生成父类的对象,没有父类对象就没有子类对象。

比如说:没有父亲,就没有孩子】。

6.super关键字:super表示对父类对象的引用。

class Xoo{
public Xoo() {
System.out.println("call Xoo()");
}
}
class Yoo extends Xoo{
public Yoo() {
//super();可省略
}
public Yoo(int a){
this();
}
}
常见错误:
class Koo{
public Koo(int s){
System.out.println(s);
}
//class Noo extends Koo{}//编译错误, 父类没有无参数构造器!
class Noo extends Koo{
//public Noo(){/*super();*/}//编译错误, 父类没有无参数构造器
public Noo(){
super(8);//子类使用super() 调用父类构造器
}
}
class Moo extends Noo{/*public Moo(){super();}*/}
================================================================== class Animal{
public void run(){
System.out.println("animal is running");
}
}
class Dog extends Animal{
public void run(){
System.out.println("dog is running");
super.run(); //调用父类的run方法,可以这样用吗?
}
7.如果子类使用super()显式调用父类的某个构造方法,那么在执行的时候就
会寻找super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法。

与this一样,super也必须要作为构造方法的第一条执行语句,前面不能有其他可执行语句。

8.关于继承的3点:
a)父类有的,子类也有
b)父类没有的,子类可以增加
c)父类有的,子类可以改变
9.关于继承的注意事项
a)在java中,一个类只能继承一个父类,是一种单继承语言但是它可以有
多个间接的父类。

b)ng.Object类是所有类的父类,在这个类中定义了所有java对
象都具有的相同行为。

在子类中不能直接访问父类中的私有成员。

c)子类和父类之间应该有“is-a”关系。

d)继承的目的就是为了代码复用。

e)构造方法不能被继承
f)方法和属性可以被继承
g)子类的构造方法隐式调用父类的不带参数的构造方法
h)当父类没有不带参数的构造方法时,子类需要使用super来显式调用父
类的构造方法,super指的是对父类的引用
i)super关键字必须是构造方法中的第一条语句。