JAVA学习十二:接口(interface)
来源:互联网 发布:其他设备 网络控制器 编辑:程序博客网 时间:2024/05/22 17:11
Java面向对象——接口
interface关键字:用于定义接口;
implements关键字:用于实现接口;
接口:是不可以创建对象的,因为接口里面全是抽象方法,需要被子类实现,子类对接口中的抽象方法全部都要覆盖后,子类才可以创建对象,否则子类只是一个抽象类。
接口的特点:
1、接口是对外暴露的规则;
2、接口是程序的功能扩展;
3、接口可以用来多实现;
4、类与接口之间是实现关系,而且类可以在继承一个类的同时实现多个接口;
5、接口与接口之间可以有继承关系;
接口的格式:
interface 接口名{}
接口中成员的修饰符是固定的;
成员常量:public static final
成员函数:public abstract void
注:接口中的成员都是用public来标识权限的。
接口的出现将“多继承”通过另外一种形式体现出来,即“多实现”。
接口中常见定义:常量,抽象方法。
接口:初期可以将其理解为“它是一个特殊的抽象类”。当抽象类中的方法都是抽象的后,那么该类可以通过接口的形式来表示。
课堂练习:接口的实例应用:
需求:
定义一个学生类,学生包括姓名,学号,班级这三个属性,
打印文理科学生语文,数学,英语这三门基础课程成绩,
打印体育科学生体育类课程及文化课程成绩。
但文理科学生在学习基础课程的同时,一部分学生还要补习美术,另一部分学生还要补习法语。
还有一类学生,即学习基础文化课程,又学习体育课程,还要补习美术和法语。
需求分析:
1、父类应有属性:姓名,学号,班级,语文,数学,英语。以及抽象的学习方法。所以父类应该是抽象类。
2、文理科学生类:继承父类的属性,然后复写适合自己的学习方法。
3、学习任务特重类学生:继承父类属性,复写父类中的抽象方法,然后在实现自己特有的补习方法。
//抽象一个学生类作为父类,在父类中定义姓名,学号,班级,及语数外三课的学习方法;
abstract class stuends
{
private String name; //定义基本属性姓名.
private String num; //定义基本属性学号.
private String classnum; //定义基本属性班级.
private int yw; //定义基本属性语文成绩.
private int sx; //定义基本属性数学成绩.
private int yy; //定义基本属性英语成绩.
/构造函数初始化基本属性。
stuends(String name,String num,String classnum,int yw,int sx,int yy) /
{
this.name = name;
this.num = num;
this.classnum = classnum;
this.yw = yw;
this.sx = sx;
this.yy = yy;
}
//打印基本属性及成绩。
void show()
{
System.out.print("姓名:"+name+"\n"+"学号:"+num+"\n"+"班级:"+classnum+"\n"
+"语文:"+yw+"\n"+"数学:"+sx+"\n"+"英语"+yy+"\n");
}
abstract void xuexi(); //抽像学习方法。
}
//建立美术课的接口。
interface bukems
{
public static final String MS = "补课内容:美术";
public abstract void msshow();
}
//建立法语课的接口.
interface bukefy
{
public static final String FY = "补课内容:法语";
public abstract void fyshow();
}
//建立第一类文科类学生类,继承自steunds类。同时复写补习美术。
class WKMsteunds extends stuends //继承父类stenuds
{
//使用super调用父类的方法初始化自身属性。
WKMsteunds(String name,String num,String classnum,int yw,int sx,int yy)
{
super(name,num,classnum,yw,sx,yy);
}
void xuexi() //复写父类中的抽象方法,复写适合自己的学习方法。
{
System.out.println("文课类学生学习美术中。。。");
}
}
//建立第二类文科类学生类,继承自steunds类。同时复写补习美术和法语。
//继承父类stenuds,同时实现bukefy接口
class WKMFsteundsTo extends stuends implements bukefy
{
//使用super调用父类的方法初始化自身属性。
WKMFsteundsTo(String name,String num,String classnum,int yw,int sx,int yy)
{
super(name,num,classnum,yw,sx,yy);
}
void xuexi() //复写父类中的抽象方法,复写适合自己的学习方法。
{
System.out.println("文课类学生学习美术中。。。");
}
public void fyshow() //复写接口bukefy中的抽象方法,实现适合自己的补课法语方法.
{
System.out.println(FY);
}
}
//建立学习任务超重类学生类,继承自steunds类。同时复写长跑。
//继承父类steunds,同时实现bukems,bukefy两个接口.
class TKsteunds extends stuends implements bukems,bukefy
{
//使用super调用父类的方法初始化自身属性。
TKsteunds(String name,String num,String classnum,int yw,int sx,int yy)
{
super(name,num,classnum,yw,sx,yy);
}
//复写父类中的抽象方法,复写适合自己的学习方法。
void xuexi()
{
System.out.println("理课类学生长跑中。。。");
}
//复写接口bukems中的抽象方法,实现适合自己的补课美术方法.
public void msshow()
{
System.out.println(MS);
}
//复写接口bukefy中的抽象方法,实现适合自己的补课法语方法.
public void fyshow()
{
System.out.println(FY);
}
}
class InterfaceDemo
{
public static void main(String[] args)
{
WKMsteunds wk1 = new WKMsteunds("张三","初三001号","初三五班",85,85,85);
WKMFsteundsTo wk2 = new WKMFsteundsTo("王五","初三002号","初三六班",90,90,90);
TKsteunds tk = new TKsteunds("周二","初三003号","初三四班",100,100,100);
wk1.show();
wk1.xuexi();
wk2.show();
wk2.xuexi();
wk2.fyshow();
tk.show();
tk.xuexi();
tk.msshow();
tk.fyshow();
}
}
- JAVA学习十二:接口(interface)
- JAVA接口(Interface)学习笔记
- Java基础学习--接口interface
- 【java学习】8.接口(interface)
- Java学习笔记之接口Interface
- 个人学习-java-接口(interface)
- JAVA 接口 Interface 学习笔记 implements
- JAVA 接口 Interface 学习笔记 implements
- Flex 学习之路之十二 用户接口user interface 使用parentDocument 属性
- 【C#学习】接口 Interface
- java 接口 interface
- Java 接口Interface
- java 接口 interface
- Java接口interface
- Java -- 接口 interface
- 25 java interface (接口)
- JAVA中的接口interface
- java 接口 interface
- 逝去的研一
- JAVA学习十一:抽象类
- POJ 2828 Buy Tickets(线段树)
- uva748 ( 高精度 浮点数幂)
- FLASH轮播广告 在谷歌浏览器中不显示的解决办法(FLash轮播放广告在谷歌浏览器中无法显示处理方法)
- JAVA学习十二:接口(interface)
- JAVA学习十三:多态性
- JAVA学习十四:内部类
- POJ 2318 几何初步 + 二分 及其 姊妹题 POJ 2398
- css 箭头
- JAVA学习十五:异常
- JAVA学习十六:包(package)
- 暑期训练-泰山挑夫1
- rails-sidekiq