面向对象的三大特征:继承、封装、多态
继承两个作用:
-
代码复用,更加容易实现类的拓展
-
方便对事务建模
1. 继承的实现
继承使用extends实现
public class Person { //默认扩展Object
String name;
int height;
public void rest() {
System.out.println("rest");
}
}
class Student extends Person{
int score;
public void study() {
System.out.println("Study"+this.name);
}
Student(String name,int height,int score){
this.name = name;
this.height = height;
this.score = score;
}
}
2. 继承使用要点
-
父类也被称作超类、基类、派生类
-
Java中只有单继承,没有如C++中的多继承
-
Java中类没有多继承,接口有多继承
-
子类继承父类,可以得到父类的全部属性和方法,但不得可以直接访问
-
如果定义一个类时,没有调动extends,则它的父类时java.lang.Object
3. 继承中方法的重写Override
方法的重写需要符合下面三个要点:
-
"==":方法名、形参列表相同
-
"<=":返回值类型和声明异常类型,子类小于等于父类
-
">=":访问权限,子类大于等于父类
@Override 看到这个就是重写的意思
4. 继承和组合
为了实现代码的复用,除了继承之外还可以用组合。
public class Anaimal {
public static void main(String[] args) {
Taidi t = new Taidi();
t.dog.shout();
t.dog.height = 101;
}
}
class Dog{
int height;
public void shout() {
System.out.println("wangwangwang");
}
}
class Taidi{
Dog dog = new Dog();
}
组合比较灵活,继承只能有一个父类,组合可以有多个属性。
继承除了代码复用,还能方便对事务的建模,所以建议"is-a"使用继承,"has-a"使用组合。