关于Java运行和生成对象问题



package Wangui2;

interface SpeakEnglish {    //定义接口
    public abstract void speak();
}
class Person{            //定义抽象人类
    private String name;
    public Person(){}
    public Person(String name){
        this.name = name;
        }
    public String getName(){
        return name;
    }
    
    public void setName(String name){
        this.name = name;
    }
    }
abstract class Player extends Person{   //定义抽象运动员类
    public Player(){}
    public Player(String name){
        super(name);
    }                                
    public abstract void study();      //定义学习
}
 abstract class Coach extends Person{      //定义抽象教练类
    public Coach(){}
    public Coach(String name){
        super(name);
    }
    public abstract void teah();        //定义教学
}
class PingPangPlayer extends Player implements SpeakEnglish{   //具体乒乓球运动员类
    public PingPangPlayer(){}
    public PingPangPlayer(String name){
        super(name);
    }
    public void speak(){      //学习英语
        System.out.println(getName()+"学习英语");
    }
    public void study(){        //学习乒乒球
        System.out.println(getName()+"乒乒球运动员学习乒乒球");
    }
}
class BasketballPlayer extends Player{                             //具体篮球运动员类
    public BasketballPlayer(){}
    
    public BasketballPlayer(String name){
        super(name);
    }
    public void study(){        //学习篮球
        System.out.println(getName()+"篮球运动员学习蓝球");
    }
}
 
 class PingPangCoach extends Coach implements SpeakEnglish{   //具体乒乓球教练类
    public PingPangCoach(){}
    
    public PingPangCoach(String name){
        super(name);
    }

    public void speak(){                 //学习英语();
        System.out.println("学习英语");
    }
    public void teah(){    //教学
        System.out.println("乒乒球教练教学员乒乒球");
}
 
class BasketballCoach extends Coach {    //具体篮球教练类
    public BasketballCoach(){}
    
    public BasketballCoach(String name){
        super(name);
    }
    public void teah(){    //教学
        System.out.println("篮球教练教学员蓝球");
    }
}
static class InterfaceDemo{     //测试类
    public static void main(String[] args){
        //测试运动员(乒乓球运动员和篮球运动员)
        //测试乒乓球运动员
        System.out.println(" ");
        PingPangPlayer A = new PingPangPlayer();
        A.setName("小强");
        A.study();
        A.speak();
        BasketballPlayer B = new BasketballPlayer();
        B.setName("小喜");
        B.study();
        
        //测试教练(乒乓球教练和篮球教练)
        //测试乒乓球教练



        PingPangCoach C = new PingPangCoach();
        C.setName("小杨");
        C.teah();
        C.speak();

        BasketballCoach D = new BasketballCoach();
        D.setName("小花");
        D.teah();
        
    }}}

img


在最后生成新的对象D的时候Basketball Coach显示出错,但是我不知道为什么,最后我没有生成对象,直接删了最后三行,但是运行不了,这是这么回事啊?没有找到main吗?求解

建议给篮球类加静态。
static class BasketballCoach extends Coach {
public BasketballCoach() {
}

最后的类为什么要弄成静态类的