继承与多态

通过过extends关键字可以申明一个类是继承另外一个类而来的,一般形式如下:

// A.java
public class A {
    private int i;
    protected int j;
    public void func() {
    }
}
// B.java
public class B extends A {
}

Java只支持单继承(继承基本类和抽象类)

instanceof

A a = new A();
B b = new B();
System.out.println(a instanceof A); // true
System.out.println(a instanceof B); // false
System.out.println(b instanceof A); // true
System.out.println(b instanceof B); // true

多态

A aa = b; // 父类实例可以赋值为子类实例
// B bb = a; // error: 子类实例不能赋值为父类实例
// Object是所有类的超类, 因此可以赋值为任意类的实例
Object obja = a;
Object objb = b;

重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。即外壳不变,核心重写!

示例:

class Animal{
   public void move(){
      System.out.println("动物move");
   }
}
class Dog extends Animal{
   public void move(){
      System.out.println("狗move");
   }
}

重载(Overload)

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

示例:

public class Overloading {
  // 以下两个参数个数不同
	public int test(){
		return 1;
	}
	public void test(int a){
		System.out.println("test");
	}
	// 以下两个参数类型顺序不同
	public String test(int a, String s){
		return a + s;
	}
	public String test(String s, int a){
		return s + a;
	}
}

调用父类方法

当需要在子类中调用父类的被重写方法时,要使用super关键字。

示例:

class Animal{
   public void move(){
      System.out.println("动物move");
   }
}
class Dog extends Animal{
   public void move(){
      super.move(); // 应用super类的方法
      System.out.println("狗move");
   }
}

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress