//创建父类
package lianxi2;
public abstract class phone {
private String name;//封装属性
public abstract void call();//打电话的功能
public abstract void sendmessage();//发短信的功能
public String getName() {
return name;//得到属性值
}
public void setName(String name) {
this.name = name;//设置属性值。封装第二步。实现封装。
}
//public void playgame() {
// TODO Auto-generated method stub
//创建第一个子类智能机
package lianxi2;
public class zhinengji extends phone {
//重写方法。
public void call() {
// TODO Auto-generated method stub
System.out.println(getName()+"智能机触摸屏打电话");
}
public void sendmessage() {
// TODO Auto-generated method stub
System.out.println(getName()+"智能机触摸屏发短信");
}
}
//创建接口
package lianxi2;
public interface IPlay {
public void playgame();
}
//创建第二个带有接口的子类
package lianxi2;
public class apple extends phone implements IPlay {
//重写子类的方法
public void call(){
System.out.println("发短信");
};
public void sendmessage(){
System.out.println("发短信");
}
@Override
//重写接口的方法
public void playgame() {
// TODO Auto-generated method stub
System.out.println("苹果手机具有玩游戏的功能");
};
}
//创建只有接口功能的基类。
package lianxi2;
public class psp implements IPlay {
@Override
//重写接口的方法
public void playgame() {
// TODO Auto-generated method stub
System.out.println("psp具有玩游戏的功能");
}
}
//测试三个类的正常实现
package lianxi2;
public class Text {
public static void main(String[] args) {
phone a = new zhinengji();
a.call();
a.sendmessage();
// a.setName("华为"); 怎么对其进行赋值操作。
phone b = new sanxing();
b.call();
b.setName("note3");
b.sendmessage();
phone c = new apple();
c.call();
c.sendmessage();
IPlay c1 = new apple();
c1.playgame();
IPlay d = new sanxing();
d.playgame();
psp e = new psp();
e.playgame();
IPlay f = new psp();
f.playgame();
IPlay g = new IPlay() {
@Override
public void playgame() {
// TODO Auto-generated method stub
System.out.println("直接调用接口的方法");
}
};
g.playgame();
new IPlay() {
@Override
public void playgame() {
// TODO Auto-generated method stub
System.out.println("shixian接口");
}
}.playgame();
}
}
/*
*
* phone ph= new gongnengji();
*
* ph.call(); ph.sendmessage();
*
* phone p= new zhinengji(); p.call(); p.sendmessage(); phone pho=new sanxing();
* pho.call(); pho.sendmessage();
*/
phone c = new apple();
c.call();
c.sendmessage();
这是调用父子类中的方法?
IPlay c1 = new apple();
c1.playgame();
这是调用接口类中的方法。
因为玩游戏没有父类冲突,且父类中没有玩游戏的功能,所以直接调用接口,且只调得动接口。来自父类的方法还要重新new一个新的对象?
new IPlaygame() {
@Override
public void playgame() {
// TODO Auto-generated method stub
System.out.println("实现接口");
}
}.playgame();