类的继承,以及类的调用
extends 子类继承父类
super 调用父类的变量或者方法
子类父类的重名函数的覆盖(重写)
子类创建的对象调用重名函数:子类的重名函数会覆盖掉父类的函数,即执行的是子类中的重名函数方法体
class A{
int a=10;
public A(){}
public void ADemo(){
System.out.println("这是A父类");
}
//重名函数Print
public void Print(){
System.out.println("这是父类的重名函数!");
}
}
class B extends A{
int b=10;
//构造方法的话,先执行父类的构造方法初始化参数,在子类中有隐藏的super调用父类构造方法
public B(){}
public void BDemo(){
//子类中调用父类的变量
super.a=20;
//子类中调用父类的方法
super.ADemo();
System.out.println(a);
System.out.println("这是B子类");
}
public void Print(){
System.out.println("这是子类的重名函数!已经覆盖父类的函数");
}
}
public class Extends {
public static void main(String[] args) {
B b = new B();
b.ADemo();
b.BDemo();
//子类调用重名函数
b.Print();
/*除非用父类创建对象,才可以调用父类中的重名函数
A a = new A();
a.Print();*/
}
}
定义抽象类以及抽象方法
抽象类的作用一般是:
方便开发者知道调用方法的数量以及方法的作用,便于修改
//定义抽象类CxA 以及抽象方法run
public abstract class CxA {
public abstract void run();
}
//抽象类的方法的具体实现
public class CxB extends CxA{
@Override
public void run() {
System.out.println("run抽象函数的实现");
}
}
//调用run方法
public class CxC {
public static void main(String[] args) {
CxB cxB = new CxB();
cxB.run();
}
}