关于接口
interface Singer{
void sing();
}
class Student implements Singer{
String aaa="hello";
public void sing(){ //请注意,sing必须用public修饰,因为子类重写父类的方法的权限不能小于父类中该方法的权限
System.out.println("啊啊啊");
}
void study(){
System.out.println("学习");
}
}
public class Animal{
public static void main(String[] args){
Student ss1=new Student();
Singer ss2=new Student();
ss1.sing();
ss1.study();
ss2.sing();
// System.out.println(ss2.aaa); //这句话也是错的。道理和下面一样
/* ss2.study(); 这句是错的,因为ss2是singer类型的。虽然我们把Student的模板赋给了它。但是它对外只
表现为Singer类型的。所以它只能调用Singer里的变量和方法。只是在调用方法时子类里德方
法覆盖了父类中的方法,所以会以子类中的方法输出(这也是多态的原因)
当我们要调用子类自己的方法的时候ss2是不能调用的。
*/