{
void sleep();//方法
}
class Me implements Student //定义ME类并实现Student接口用implements
{
public void sleep()
{
System.out.println("1111");
}
}
class Dog implements Student
{
public void sleep()
{
System.out.println("papappaap");
}
}
class Test002
{
public static void main(String[] args)
{
Student a = new Me(); //创建ME对象,使用Student类型的变量a引用
Student b = new Dog();
studentSleep(a); //调用方法,把变量a作为参数传入
studentSleep(b);
}
public static void studentSleep(Student a) //定义静态的方法,接受一个Student类参数
{
a.sleep();
}
}
可以运行;
分析:
1.定义接口Student
{
sleep()
}
2、子类实现接口 implements
{
public void sleep() // 接口中方法都是public void 修饰
}
3.多态
父类类型的变量来引用一个子类类型的对象
父类 :Student 变量:a
子类对象: ME()
4 方法
studentSleep(a)
public stat void StudentSleep(Student a)
a.Sleep()
这个就一个方法sleep()
下面一个就不知道那么出错了。 。。现在又可以运行了代码如下,有点不规范简单了点
interface Student
{
void sleep();
void learn();//多了一个learn方法
}
class Me implements Student
{
public void sleep()
{
System.out.println("1111");
}
public void learn()
{
System.out.println("java");
}
}
class Dog implements Student
{
public void sleep()
{
System.out.println("papappaap");
}
public void learn() //Dog 不行抽象类,必须实现接口的所有方法。我尝试把Dog抽象化,但是抽象类不能实例化。所有就实现接了所有方法
{
}
}
class Test002
{
public static void main(String[] args)
{
Student a = new Me();
Student b = new Dog();
studentSleep(a);
studentSleep(b);
studentLearn(a);
}
public static void studentSleep(Student a)
{
a.sleep();
}
public static void studentLearn(Student a)
{
a.learn();
}
}
多态我难懂的
父类类型的一个变量作为子类对象的引用
Student a = new ME();
实现方法中
public static void studentSleep(父类 参数)
这个(父类 参数)我想很久以前一直以为方法()只能填int String。。。类型。翻书看看方法的构造
修饰符 返回值类型 方法名字 (参数类型 参数1,参数2....)
{
执行语句
return 返回值;(返回类型void不想要return)返回值类型要一致
}
参数类型:用于限定方法时传入参数的类型
上代码中 参数类型是Student
有点乱了思路。。。