类的继承

计算机程序经常使用类之间的继承关系来表示对象之间的分类关系。

在继承关系中,有父类(基类)和子类(派生类)。比如动物类Animal和狗类Dog,Animal是父类,Dog是子类。

子类继承了父类的属性和行为,父类有的属性和行为,子类都有。但子类可以增加子类特有的属性和行为,某些父类有的行为,子类的实现方式可能与父类也不完全一样。

Object

在Java中,所有类都有一个父类,就是Object。

Object没有定义属性,但定义了一些方法,如下方代码:

1
2
3
4
5
6
7
8
9
equals(Object obj):boolean -Object
getClass():Class<?> -Object
hashCode():int -Object
notify():void -Object
notifyAll():void -Object
toString():String -Object
wait():void -Object
wait(long timeout):void -Object
wait(long timeout,int nanos):void -Object

以上方法可以被所有类直接使用。

子类可以重写父类的方法,以反应自己的不同实现。

方法前面放一个**@Override**,代表是重写的方法。

下图是Object的toString()方法, 返回的是类名和内存地址(hashcode)。

Object类的toString方法.png

下图经过重写toString()方法,返回的是m。

重写的toString方法.png

Java使用extends关键字标明继承关系,一个类最多只能有一个父类。

子类不能直接访问父类的私有属性和方法。

除了私有的属性和方法外,子类继承了父类的其他属性和方法。

假设父类Animal类如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//父类:动物类
public class Animal {

private String name;
private int age;

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}
}

包含私有属性name和age,公共方法setName和setAge。

子类Cat类不能直接调用name和age,但可以调用setName和setAge。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//子类:猫类
public class Cat extends Animal {

private String owner;

public Cat(String owner,int age,String name) {
this.owner = owner;
this.setAge(age);
super.setName(name); //super关键字
}


public static void main(String[] args) {
Cat cat = new Cat("me",1,"shaded");
}
}

super关键字指代父类,可用于调用父类构造方法,访问父类方法和变量。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021 Silver Shaded
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信