Java初学者问题
/****功能:理解多态和继承*可不可以告诉我一下多态继承到底怎么用,为什么computer类的方法参数是Usbusb(这个小写的是什么意思?)如何调用?*/public...
/**
*
* 功能:理解多态和继承
* 可不可以告诉我一下多态继承到底怎么用,为什么computer类的方法参数是Usb usb(这个小写的是什么意思?)如何调用?
*/
public class Computer {
public static void main(String[] args) {
Computer1 c1=new Computer1();
Computer1 c2=new Computer1();
Phone phone=new Phone();
Camera camera=new Camera();
Computer1.useUsb(camera);
Computer1.useUsb(phone);
}
}
//创建Usb接口
interface Usb
{
public void start();
public void stop();
}
//创建相机
class Camera implements Usb
{
public void start()
{
System.out.println("我是相机,开始工作!");
}
public void stop()
{
System.out.println("我是相机,停止工作!");
}
}
//创建手机
class Phone implements Usb
{
public void start()
{
System.out.println("我是手机,开始工作!");
}
public void stop()
{
System.out.println("我是手机,停止工作!");
}
}
class Computer1
{
public void useUsb(Usb usb)
{
usb.start();
usb.stop();
}
} 展开
*
* 功能:理解多态和继承
* 可不可以告诉我一下多态继承到底怎么用,为什么computer类的方法参数是Usb usb(这个小写的是什么意思?)如何调用?
*/
public class Computer {
public static void main(String[] args) {
Computer1 c1=new Computer1();
Computer1 c2=new Computer1();
Phone phone=new Phone();
Camera camera=new Camera();
Computer1.useUsb(camera);
Computer1.useUsb(phone);
}
}
//创建Usb接口
interface Usb
{
public void start();
public void stop();
}
//创建相机
class Camera implements Usb
{
public void start()
{
System.out.println("我是相机,开始工作!");
}
public void stop()
{
System.out.println("我是相机,停止工作!");
}
}
//创建手机
class Phone implements Usb
{
public void start()
{
System.out.println("我是手机,开始工作!");
}
public void stop()
{
System.out.println("我是手机,停止工作!");
}
}
class Computer1
{
public void useUsb(Usb usb)
{
usb.start();
usb.stop();
}
} 展开
2018-01-22 · 百度知道合伙人官方认证企业
尚学堂科技有限公司
北京尚学堂科技有限公司是一家从事JAVA、大数据、web前端、网络在线教育、互联网架构师、Android、ios技术开发、咨询为一体的软件公司。公司由海外留学人员和国内IT人士创建。
向TA提问
关注
展开全部
这本质上是一道多态题,需要理解以下两点:
父类引用指向子类对象:所能看到的只是父类那部分属性和方法
在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 原来父类对象中方法的地址指向自己的方法,当父类引用指向new子类对象的过程时指针会发生改变,父类对象中方法的指针从指向自己的方法变成指向new对象对应类中重写的那个方法(如图红色箭头)。
此题目的核心语句内存图如下:
关键语句解释:
Phone phone = new Phone();
Camera camera = new Camera();
创建出来两个对象,一个是Phon类型的一个是 Camera 类型的。
Computer1.useUsb(camera);
Computer1.useUsb(phone);
useUsb( )是Computer1中的一个静态方法,可以用类名直接访问。此方法可以接收的参数类型是Usb类型以及它的子类。这两条语句传入的参数类型是它的子类对象,属于多态。此过程存在:父类对象中方法的指针从指向自己的方法变成指向new对象对应类中重写的那个方法(如图红色箭头),所有执行方法体的时候输出的是其对应子类中重写以后的方法的内容。
展开全部
多态的出现是为了解决复用的问题,在上面的例子中Camera, Phone都实现了Usb接口,可以通过同一种接口接入 Computer (也就是例子中的 useUsb 方法),这也就实现了 useUsb 方法的复用,如果不实现 Camera 和 Phone 不实现 Usb 接口,那就得为 Computer 创建两个useUsb方法,一个用于 Camera, 一个用于 Phone 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询