Java接口不能实例化吗?
部分代码如下,标红的部分,不太理解
public interface ICommand {
void command();
}
public class CommandOpen implements ICommand{
@Override
public void command() {
// TODO Auto-generated method stub
TV.createTvInstance().open();
}
}
public class CommandClose implements ICommand{
@Override
public void command() {
// TODO Auto-generated method stub
TV.createTvInstance().close();
}
}
public class CommandChangeChannel implements ICommand{
@Override
public void command() {
// TODO Auto-generated method stub
TV.createTvInstance().changeChannel();
}
}
public class Controller {
// 将该类原本的CommandOpen换成ICommand, CommandClose换成ICommand, CommandChangeChannel换成ICommand也可以编译通过并运行结果无误
ICommand cmdOpen;
ICommand cmdClose;
ICommand cmdchange;
// 初始化传进来的是new出来的对象,这种方式不是实例化接口吗?
Controller(ICommand cmdOpen, ICommand cmdClose, ICommand cmdchange)
{
this.cmdOpen = cmdOpen;
this.cmdClose = cmdClose;
this.cmdchange = cmdchange;
}
public void open()
{
cmdOpen.command();
}
public void close()
{
cmdClose.command();
}
public void changeChannel()
{
cmdchange.command();
}
}
public class TV {
private static TV sTv;
public void open()
{
System.out.print("open tv. \n");
}
public void close()
{
System.out.print("close tv. \n");
}
public void changeChannel()
{
System.out.print("change tv. \n");
}
private TV()
{
}
public static TV createTvInstance()
{
if (sTv == null)
sTv = new TV();
return sTv;
}
}
public class Client {
public static void main(String[] args) {
CommandOpen cmdOpen = new CommandOpen();
CommandClose cmdClose = new CommandClose();
CommandChangeChannel cmdchange = new CommandChangeChannel();
Controller c = new Controller(cmdOpen, cmdClose, cmdchange);
c.open();
c.close();
c.changeChannel();
}
}
public interface ICommand {
void command();
}
public class CommandOpen implements ICommand{
@Override
public void command() {
// TODO Auto-generated method stub
TV.createTvInstance().open();
}
}
public class CommandClose implements ICommand{
@Override
public void command() {
// TODO Auto-generated method stub
TV.createTvInstance().close();
}
}
public class CommandChangeChannel implements ICommand{
@Override
public void command() {
// TODO Auto-generated method stub
TV.createTvInstance().changeChannel();
}
}
public class Controller {
// 将该类原本的CommandOpen换成ICommand, CommandClose换成ICommand, CommandChangeChannel换成ICommand也可以编译通过并运行结果无误
ICommand cmdOpen;
ICommand cmdClose;
ICommand cmdchange;
// 初始化传进来的是new出来的对象,这种方式不是实例化接口吗?
Controller(ICommand cmdOpen, ICommand cmdClose, ICommand cmdchange)
{
this.cmdOpen = cmdOpen;
this.cmdClose = cmdClose;
this.cmdchange = cmdchange;
}
public void open()
{
cmdOpen.command();
}
public void close()
{
cmdClose.command();
}
public void changeChannel()
{
cmdchange.command();
}
}
public class TV {
private static TV sTv;
public void open()
{
System.out.print("open tv. \n");
}
public void close()
{
System.out.print("close tv. \n");
}
public void changeChannel()
{
System.out.print("change tv. \n");
}
private TV()
{
}
public static TV createTvInstance()
{
if (sTv == null)
sTv = new TV();
return sTv;
}
}
public class Client {
public static void main(String[] args) {
CommandOpen cmdOpen = new CommandOpen();
CommandClose cmdClose = new CommandClose();
CommandChangeChannel cmdchange = new CommandChangeChannel();
Controller c = new Controller(cmdOpen, cmdClose, cmdchange);
c.open();
c.close();
c.changeChannel();
}
}
...全文
相关推荐
java简答题
抽象类和接口有什么区别?抽象类不能实例化对象,必须有子类继承它并重写其抽象方法之后才可以使用,接口是抽象的,不能实例化对象,必须有子类实现它。3.
Java接口定义与实现方法分析
chest();// 接口没有构造方法,也不能被实例化的}```接口的实现:在Java语言中,类可以实现多个接口,使用implements关键字,例如:```javaclass boy extends
java必刷面试题答案
接口和抽象类有什么区别?接口是抽象的,所有方法都是抽象的,而抽象类可以有抽象方法和普通方法。接口不能被实例化,而抽象类可以被实例化。15. java中的IO流分为几种?
Java抽象类接口与多态PPT教案学习.pptx
二、接口接口是Java中的一种特殊的抽象类,所有的方法都是抽象的,不能被实例化。接口的主要特点是:* 接口所有的方法都是抽象的,需要实现类来实现这些方法。* 接口不能被实例化,需要实现类来实现接口。
Java抽象类与接口区别详解
在本文中,我们将详细讨论Java抽象类和接口的区别,包括它们的定义、特性、使用场景等。一、Java抽象类Java抽象类是用来捕捉子类的通用特性的,它不能被实例化,只能被用作子类的超类。


Java SE
