继承这个词一眼看过去就能知道这个特点的大概,是一种基于已有类来创建新类的机制。由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类)。一个类只能有一个父类,但特殊情况object.java是所有类的父类,并且被final修饰的类不能有子类。
根据访问权限修饰符的不同,子类可以继承父类中某些成员变量和方法,提高了代码的重用性,子类也可以添加新的成员变量和方法,这样有利于软件等的升级。父类的方法可以被重写,但要保证一些条件: 1、重写后子类中方法的权限不能小于父类中被重写方法的权限。
2、如果父类的方法被static 和 final修饰则不能被重写。
3、如果父类中方法的返回值为基本数据类型,则返回值类型必须相同,如果是引用类型,则返回值类型相同或是父子关系(重写的方法返回值类型是被重写方法返回值类型的子类)。
4、父类和子类的方法名和参数列表(参数的数量及对应的类型必须相同,但是参数名可以变,一般没必要改)必须相同。
继承又因对象可以不同产生了上转型对象和下转型对象,
上转型对象:父类声明,子类实例化。上转型对象隐藏了子类自定义的功能和成员变量。
下转型对象:将上转型对象还原回原来类型的对象。
例:
父类:package test.td;
public class Parent {
void Parent1() {
System.out.println("我是父类");
}
}
子类:package test.td;
public class Son extends Parent {
void Son1() {
System.out.println("我是子类中的新建方法");
}
void Parent1() {
System.out.println("我是子类");
}
}
Main方法:package test.td;
public class Main {
public static void main(String[] args) {
Parent up=new Son();//上转型对象
up.Parent1();//结果为 我是子类
Son down=(Son) up;// 下转型对象
down.Son1();//结果为 我是子类中的新建方法
}
}