大家好,欢迎来到IT知识分享网。
接口
接口概念
.接口就似乎一种公共规范的标准,只要符合规范标准,大家都有的用 例如市面上所有的usb接口都是一样的,就是遵循了那么一种规范
.java中的接口更多的体现在对行为的抽象
接口的特点
1.接口用关键字interface表示
public interface 接口名{}
2.类接口的实现用implements表示
public class 类名 interface 接口名{}
3.接口不能实例化
接口如何进行实例化呢? 参照多态的方式,通过对实现类对象进行实例化,这叫做接口多态。
多态的形式:具体类多态,抽象类多态,接口类多态
多态的前提:有继承关系和实现关系;有方法重写;有(父/接口)类引用指向(子类/实现)类对象
4.接口的实现类
要么重写接口中的抽象方法
要么是抽象实现类
接口的成员特点
1.成员变量
只能是常量
默认修饰符:public static final
2.构造方法
接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体的存在
一个类如果没有父类,默认继承object类
3.成员方法
只能是抽象方法
默认修饰符 public static
4.关于接口中的方法,jdk8 和jdk9 中有一些新特性,以后再讲
以下为接口类的 猫狗案例 分为五个类
1.animal
2.animaldemo
3.cat
4.dog
5.inter接口类
案例分析
需求:
.对猫和狗进行训练,他们就可以跳高了,这里加入了调高功能,请采用抽象类和接口类来实现猫狗案例,并在测试类中进行测试
思路:
1.定义接口类(jumpping)
.成员方法:跳高();
2.定义动物类(animal)
.成员变量:姓名,年龄
.构造方法:带参,无参
.成员方法:get/set方法,吃饭();
2.定义猫类(cat)继承动物类,实现跳高接口
.构造方法:带参,无参
.成员方法:重写吃饭{},重写跳高{}
3.定义狗类(dog)继承动物类,实现跳高接口
.构造方法:带参,无参
.成员方法:重写吃饭{},重写跳高{}
4.定义测试类(animaldemo),写测试代码
1.animal
package 接口案例_猫和狗; public abstract class animal { private String name; private int age; //------成员变量------------------------------ public abstract void eat(); //------成员方法------------------------------ / * */ public animal() { } / * @param name * @param age */ public animal(String name, int age) { this.name = name; this.age = age; } //------构造方法------------------------------ / * @return name */ public String getName() { return name; } / * @param name 要设置的 name */ public void setName(String name) { this.name = name; } / * @return age */ public int getAge() { return age; } / * @param age 要设置的 age */ public void setAge(int age) { this.age = age; } //------get/set------------------------------ }
2.animaldemo
package 接口案例_猫和狗; public class animaldemo { /* 需求: .对猫和狗进行训练,他们就可以跳高了,这里加入了调高功能,请采用抽象类和接口类来实现猫狗案例,并在测试类中进行测试 思路: 1.定义接口类(jumpping) .成员方法:跳高(); 2.定义动物类(animal) .成员变量:姓名,年龄 .构造方法:带参,无参 .成员方法:get/set方法,吃饭(); 2.定义猫类(cat)继承动物类,实现跳高接口 .构造方法:带参,无参 .成员方法:重写吃饭{},重写跳高{} 3.定义狗类(dog)继承动物类,实现跳高接口 .构造方法:带参,无参 .成员方法:重写吃饭{},重写跳高{} 4.定义测试类(animaldemo),写测试代码 */ public static void main(String[] args) { //无参构造方法 猫 inter i = new cat(); i.jummping(); //因为在接口类里面只定义了一个jumping,所以在调用的时候,就只能调用一个jumping animal a = new cat (); a.setAge(5); a.setName("加菲"); System.out.print(a.getAge()+"岁的猫 "+a.getName()+" 喜欢"); a.eat(); ((cat)a).jummping(); // ((cat)a).jummping();这种强制转换能用 //带参构造方法 猫 a = new cat ("及算法",15); System.out.print(a.getAge()+"岁的猫 "+a.getName()+" 喜欢"); a.eat(); //无参构造方法 狗 i = new dog(); i.jummping(); a = new dog (); a.setAge(5); a.setName("旺财"); System.out.print(a.getAge()+"岁的狗 "+a.getName()+" 喜欢"); a.eat(); ((dog)a).jummping(); //带参构造方法 狗 a = new dog ("长白山吊睛白额狗",23); System.out.print(a.getAge()+"岁的狗 "+a.getName()+" 喜欢"); a.eat(); } }
3.cat
package 接口案例_猫和狗; public class cat extends animal implements inter { @Override public void jummping() { // TODO 自动生成的方法存根 System.out.println("跳了2米"); } @Override public void eat() { // TODO 自动生成的方法存根 System.out.println("吃鱼"); } //-------构造方法--------------------------------- / * */ public cat() { super(); // TODO 自动生成的构造函数存根 } / * @param name * @param age */ public cat(String name, int age) { super(name, age); // TODO 自动生成的构造函数存根 } }
4.dog
package 接口案例_猫和狗; public class dog extends animal implements inter { @Override public void jummping() { // TODO 自动生成的方法存根 System.out.println("跳了18米"); } @Override public void eat() { // TODO 自动生成的方法存根 System.out.println("吃骨头"); } //--------------构造方法------------- / * */ public dog() { super(); // TODO 自动生成的构造函数存根 } / * @param name * @param age */ public dog(String name, int age) { super(name, age); // TODO 自动生成的构造函数存根 } }
5.inter接口类
package 接口案例_猫和狗; public interface inter { public abstract void jummping(); }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/150786.html