以不同参数调用父类方法,可以得到不同的处理,子类中无需定义相同功能的方法,避免了重复代码编写,只需要实例化一个继承父类的子类对象,即可调用相应的方法,而只需要维护附父类方法即可。
- package classExtends;
-
- public class Quadrangle { //定义四边形类
- private Quadrangle[] qtest = new Quadrangle[6];
- private int nextIndex = 0;
- public void draw(Quadrangle q) {
- System.out.println(qtest.length);
- if (nextIndex < qtest.length) {
- qtest[nextIndex] = q;
- System.out.println(nextIndex);
- nextIndex++;
- }
- }
-
- public static void main(String[] args) {
- Quadrangle q = new Quadrangle(); //实例化四边形Quadrangle对象,用于调用draw()方法
- q.draw(new Square()); //以Square正方形对象为参数调用draw()方法
- q.draw(new Paralllelogram()); //以Paralllelogram对象为参数调用draw()方法
- }
- }
-
- class Square extends Quadrangle { //定义正方形
- public Square() {
- System.out.println("正方形");
- }
- }
-
- class Paralllelogram extends Quadrangle { //定义平行四边形
- public Paralllelogram() {
- System.out.println("平行四边形");
- }
- }
-
- 输出:
- 正方形
- 6
- 0
- 平行四边形
- 6
- 1
一般将父类定义为抽象类,使用这个父类进行集成和多态处理;使用abstract关键字定义的类是抽象类,使用abstract关键字定义的方法是抽象方法;抽象类除了被继承外,无任何其他意义。
也就是保证以相同的方法名称,参数列表,相同的返回值类型创建出非抽象方法。
语法:
public abstract class Test{ //定义抽象类
abstract void testAbstract(); //定义抽象方法
}
接口就是抽象类的延伸,可以将接口看做纯粹的抽象类。
语法:
public interface drawTest{
void draw();
}
1.public: 接口可以像类一样被权限修饰符修饰,但public关键字仅限于接口在与其同名的文件中被定义。
2.interface:定义接口关键字。
3.drawTest:接口名称。
语法:
public class Parallelogram extends Quadrangle implements drawTest{
....//
}
class 类名 implemets 接口1,接口2,接口3....接口n{
//.......
}
- package classExtends;
-
- interface drawTest { //定义接口
- public void draw(); //定义方法
- }
-
- //定义平行四边形类,继承四边形类,并实现接口drawTest
- class ParallelogramgleUseInterface extends QuadrangleUseInterface implements drawTest {
- public void draw() { //由于本类实现了接口drawTest,所以需要重写覆盖draw()方法
- System.out.println("平行四边形.draw()");
- }
-
- public void doAnything() { //重写覆盖父类方法
- //someSentence;
- }
- }
-
- class SquareUseInterface extends QuadrangleUseInterface implements drawTest {
- public void draw() {
- System.out.println("正方形.draw()");
- }
-
- public void doAnything() { //重写覆盖父类方法
- //someSentence;
- }
- }
-
-
- public class QuadrangleUseInterface { //定义四边形类
- public void doAnything() {
- //someSentence;
- }
-
- public static void main(String[] args) {
- drawTest[] d = {new ParallelogramgleUseInterface(), new SquareUseInterface()}; //接口也可以进行向上转型操作
- for (int i = 0; i < d.length; i++) {
- d[i].draw(); //调用draw()方法
- }
- }
- }
-
- 输出:
- 平行四边形.draw()
- 正方形.draw()