java抽象类和接口的多种实现---学习日志

//创建父类

 

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();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值