java基础:接口。

在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。

接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类,可以指定一个类必须做什么,而不是规定它如何去做。

接口中只能定义抽象方法,这些方法默认为 public abstract 的,因而在声明方法时可以省略这些修饰符。试图在接口中定义实例变量、非抽象的实例方法及静态方法,都是非法的。

package cn.abstractClass.day0927;
/**
* 现实领域 软件领域
* Serial ATA委员会 制订硬盘接口规范 interface SataHdd
* 硬盘串口为8针 int COUNT = 8;
* 数据读写功能 writeData(); readData();
*
* 三星 实现 硬盘接口 samsang implements SataHdd{}
*
*
* 接口 1.创建接口
*
* 接口是若干常量和抽象方法的集合
*
* 特性:
* 1.接口中只能定义抽象方法,这些方法默认为 public abstract
* 的,因而在声明方法时可以省略这些修饰符。试图在接口中定义实例变量、非抽象的实例方法及静态方法,都是非法的。
* 2.接口中没有构造方法,不能被实例化。
* 3.一个接口不实现另一个接口,但可以继承多个其他接口。接口的多继承特点弥补了类的单继承。
*/

public interface SataHdd {
/**
* 接口中声明的成员变量默认都是 public static final的,必须显示的初始化。因而在常量声明时可以省略这些修饰符
*/
//串口数量
static final int CONNECT = 8; //<==>int CONNECT=8;
//写数据功能
void writeData(); //<==>public abstract void writeData
//读数据功能
public void readData();
}

package cn.abstractClass.day0927;

public class SumsungHdd implements SataHdd {

@Override
public void writeData() {
    System.out.println("Samsung硬盘写数据功能");
}

@Override
public void readData() {
    System.out.println("Samsung硬盘读取数据功能");
}

}

package cn.abstractClass.day0927;

public class WesternDigitalHdd implements SataHdd {

@Override
public void writeData() {
    System.out.println("\n");
    System.out.println("WD写数据功能");
}

@Override
public void readData() {
    System.out.println("WD读取数据功能");
}

}

package cn.abstractClass.day0927;

public class SataHddTest {

public static void main(String[] args) {
    SumsungHdd samsung1=new SumsungHdd();
    samsung1.writeData();
    samsung1.readData();

    WesternDigitalHdd wd = new WesternDigitalHdd();
    wd.writeData();
    wd.readData();
}

}

手机 智能机 功能机 Psp 运用抽象类和接口实现 其中还使用了匿名内部类
package cn.day0927;
public abstract class Phone {
String brand;
String color;

public void Phone(String brand,String color){
    this.brand=brand;
    this.color=color;
}
public abstract void callPhone();

public abstract void sendMessage();     

}
package cn.day0927;
public class CellPhone extends Phone {
public void callPhone(){
System.out.println(this.brand+” “+this.color+”接打电话”);
}
public void sendMessage(){
System.out.println(this.brand+” “+this.color+”发送短信”);
}
}
package cn.day0927;
//SmartPhone即继承了Phone又实现了Psp
public class SmartPhone extends Phone implements Psp{
public void callPhone(){
System.out.println(this.brand+” “+this.color+”接打电话”);
}
public void sendMessage(){
System.out.println(this.brand+” “+this.color+”发送短信”);
}
//匿名内部类
// public void playGame(){
// new Psp() {
//
// @Override
// public void playGame() {
// System.out.println(brand+color+”也可以玩游戏”);
// }
// }.playGame();
// }
@Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println(brand+color+”也可玩游戏”);
}
}
package cn.day0927;
public interface Psp {
public void playGame();
}
package cn.day0927;
public abstract class PhoneTest {

public static void main(String[] args) {
    //Phone cellPhone = new CellPhone();//父类变量引用子类实例
    CellPhone cellPhone = new CellPhone();//多态
    cellPhone.brand="魅族";
    cellPhone.color="粉色";
    cellPhone.callPhone();
    cellPhone.sendMessage();

    SmartPhone smartPhone = new SmartPhone();//此处不能使用父类变量引用子类实例,如使用不能调用接口playGame();方法
    smartPhone.brand="魅蓝note";
    smartPhone.color="蓝色";
    smartPhone.callPhone();
    smartPhone.sendMessage();
    smartPhone.playGame();
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值