面向对象7---接口
来源:互联网 发布:java防止sql注入转义 编辑:程序博客网 时间:2024/06/06 12:27
一.接口的概述及特点
- 接口的概述:动物类中的具体的动物:猫和狗,有时候会具有额外的动作(跳高,计算等等…),这些动作不能定义到具体类中,所以java针对这种情况,就提供了一个关键字:interface(接口)
接口的格式:
interface 接口名{
}接口的特点:
- 接口里面定义的方法只能是抽象方法
- 接口中没有构造方法
- 接口的子类和接口的关系:实现(implements)
- 接口不能实例化,需要使用接口的子类进行实例化(接口多态)
//动物类abstract class Animal{}//接口:某些动物通过培训掌握技能interface Jump{ public abstract void jump();}//狗类class Dog extends Animal{}//某些狗会跳跃class JumpDog extends Dog implements Jump{ public void jump(){ System.out.println("跳高"); }}//测试类public class Demo1 { public static void main(String[] args){ //利用接口多态进行实例化 Jump a = new JumpDog(); a.jump(); //可以使用具体的类:实现接口的这个子类是功能最多的 JumpDog b = new JumpDog(); b.jump(); }}
二.接口和抽象类的区别
1.成员区别:
接口:
成员变量默认修饰符:public static final(常量)
成员方法默认修饰符:public abstract(抽象方法)
2.关系的区别:
3.设计理念的区别:
三.接口练习
- 教练和运动员案例:
乒乓球运动员和篮球运动员
乒乓球教练和篮球教练
为了出国交流,跟乒乓球相关的人员都需要学习英请用所学知识:分析,这个案例中有哪些抽象类,哪些接口,哪些具体类
分析:
人类:
public abstract class Person { private String name; private int age; //无参构造 public Person() { } //有参构造 public Person(String name, int age) { super(); this.name = name; this.age = age; } //公共的访问方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void sleep(){ System.out.println("睡觉"); } public abstract void eat(); }
运动员类:
public abstract class Player extends Person{ //无参构造 public Player() { } //有参构造 public Player(String name, int age) { super(name, age); } public void eat(){ System.out.println("吃营养餐"); } public abstract void study();}
教练类:
//教练类public abstract class Coach extends Person{ //无参构造 public Coach() { } //有参构造 public Coach(String name, int age) { super(name, age); } public void eat(){ System.out.println("吃饭"); } public abstract void teach();}
接口:
public interface StudyEnglish { public abstract void SpeakEnglish();}
乒乓球运动员类:
public class PingpangPlayer extends Player implements StudyEnglish{ public PingpangPlayer() { } public PingpangPlayer(String name, int age) { super(name, age); } public void study(){ System.out.println("打乒乓球"); } public void SpeakEnglish(){ System.out.println("学习英语"); }}
篮球运动员类:
public class BasketballPlayer extends Player{ public BasketballPlayer() { } public BasketballPlayer(String name, int age) { super(name, age); } public void study(){ System.out.println("打乒乓球"); } }
乒乓球教练类:
public class PingpangCoach extends Coach implements StudyEnglish{ public PingpangCoach() { } public PingpangCoach(String name, int age) { super(name, age); } public void teach(){ System.out.println("教打乒乓球"); } public void SpeakEnglish(){ System.out.println("学习英语"); }}
篮球教练类:
public class BasketballCoach extends Coach { public BasketballCoach() { } public BasketballCoach(String name, int age) { super(name, age); } public void teach(){ System.out.println("教打篮球"); } }
阅读全文
0 0
- 面向对象7---接口
- Java面向对象(7)接口
- 面向接口vs面向对象
- (7)面向对象继承&抽象类&接口
- 面向对象之接口
- 面向对象之接口
- javaSE-面向对象-接口
- 面向对象编程 ,接口
- 面向对象的接口
- 面向对象--接口
- 面向对象-接口
- 面向对象--继承、接口
- 面向接口对象
- 16 面向对象 接口
- 3、面向对象接口
- 面向对象-----接口
- PHP面向对象-接口。
- 面向对象之接口
- servlet中的cookie
- show slave status\G中的Read_Master_Log_Pos和Relay_Log_Pos的(大小)关系
- windows+linux安装Redis
- Eclipse+maven+scala+spark环境搭建
- openGL 教学素材记录
- 面向对象7---接口
- 2017.7.18 树上距离=k 思考记录
- Educational Codeforces Round 25 B. Five-In-a-Row
- iOS转前端之仿写登录页面
- 关于浏览器隐私/无痕模式下localStorage的判断
- 视觉设计师提升自己能力的17条经验(上)
- CLR Via C# Note--The CLR's execution mode
- 四、Enable and Configure Cross-Database Access
- leetcode 628 Maximum Product of Three Numbers c语言 (找到第k大的数)