java 多态

来源:互联网 发布:神经网络算法代码 编辑:程序博客网 时间:2024/06/06 05:33
interface Student  //定义接口 interface
{
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

有点乱了思路。。。


1 0