黑马程序员技术交流社区
标题:
接口问题,指教优化?
[打印本页]
作者:
Blüe-wǒlf
时间:
2014-5-14 16:45
标题:
接口问题,指教优化?
[c
abstract class Student//定义最开始的基础类
{
public abstract void study();//每个学员都必须要学习,但是学习方法不一样,模糊式所以选择abstract
void sleep()//每个学员都必须要睡觉
{
System.out.println("爱睡觉");
}
}
interface Smoking//部分学员需要
{
public void smoke();
}
class Li extends Student implements Smoking//李继承学员基本类,并同时具备抽烟功能。
{
public void study(){System.out.println("学习方法1");}
void sleep(){};
public void smoke()
{
System.out.println("抽烟");
}
}
class InterfaceDemo2
{
public static void main(String [] args)
{
//下面是通过新建对象把Li中的数据打印出来。有其他简单方法(java视频才学到第七天)打印出Li中的内容吗?要在哪里修改
Li x=new Li();
x.study();
x.smoke();
}
}
复制代码
作者:
Shimano
时间:
2014-5-14 20:47
本帖最后由 Shimano 于 2014-5-14 20:51 编辑
abstract class Student//定义最开始的基础类
{
public abstract void study();//每个学员都必须要学习,但是学习方法不一样,模糊式所以选择abstract
public void sleep()//每个学员都必须要睡觉
{
System.out.println("爱睡觉");
}
}
interface Smoking//部分学员需要
{
public void smoke();
}
class Li extends Student implements Smoking//李继承学员基本类,并同时具备抽烟功能。
{
public void study()
{
System.out.println("学习方法1");
}
public void sleep()
{
System.out.println("爱趴桌子上睡觉!");
}
public void smoke()
{
System.out.println("抽烟");
}
}
class InterfaceDemo2
{
public static void main(String [] args)
{
//下面是通过新建对象把Li中的数据打印出来。有其他简单方法(java视频才学到第七天)打印出Li中的内容吗?要在哪里修改
Li x = new Li();
x.study();
x.smoke();
System.out.println("-------------------");
//以下方法可以将Li中的数据打印出来。
Student s = new Li();//父类引用指向子类对象,向上转型(多态)
s.sleep();
Li l = (Li)s;//强制将父类的引用指向子类引用类型,向下转型。
l.study();
l.smoke();
}
}
复制代码
//父类引用指向子类对象,向上转型(多态)
//强制将父类的引用指向子类引用类型,向下转型。
打印结果:
学习方法1
抽烟
-------------------
爱趴桌子上睡觉!
学习方法1
抽烟
作者:
pandapan
时间:
2014-5-14 22:13
这位同学,对你的问题的描述不太理解,你看哈,Class Li中一共有三个方法,不知道您想优化那个呢?
1.如果只是想单纯的调用Study方法,那么可以采用二楼的回答,向上转型。
Student s = new Li();//父类引用指向子类对象,向上转型(多态)
复制代码
,或者直接用自身的引用指向自身的对象
2.如果要单独调用sleep方法,因为是自己类独有的,那么必须采用自身的引用来调用。或者Li(s),即将向上转型的结果再转为自身,不过没感觉到优化,只是用到了多态
3.如果要调用smoke方法,两种方式,一是直接用自身的引用指向自身的对象(Li l = new Li()),二是采用接口的方式,表达如下:
Smoking smoker = new Li();
复制代码
希望能够帮到你
作者:
Blüe-wǒlf
时间:
2014-5-15 21:59
pandapan 发表于 2014-5-14 22:13
这位同学,对你的问题的描述不太理解,你看哈,Class Li中一共有三个方法,不知道您想优化那个呢?
1.如果 ...
恩。看到了。谢谢两位同学。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2