一、接口概述
说起接口,我们不由自主就会想到笔记本上的USB接口或者墙壁上的接口,而在JAVA中的接口与现实中的接口有相似之处,都是一种公共的规范标准,只要符合规范标准,大家都可以通用
但是JAVA中的接口更多体现在对行为的抽象
二、接口的特点
- 接口用关键词interface(public interface 接口名{ })修饰
- 类实现接口用implements表示(public class 类名 implements 接口名{ })
- 接口不能实例化
- 接口若要实例化,需要参照多态的方式,通过实现类对象实例化,这叫接口多态
- 多态的形式:具体类多态,抽象类多态,接口多态
- 多态的前提:有继承或者实现关系;有方法重写;有父(类、接口)引用指向(子/实现)类对象
- 接口的实现类,要么重写接口中的所有抽象方法,要么是抽象类
三、接口的成员特点
- 成员变量:只能是常量,默认修饰符是public static final
- 构造方法:接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在,一个类如果没有父类,默认继承Object类
- 成员方法:只能是抽象方法,默认修饰符是public abstract
四、例子
package TEXT;
/*
跳高接口
*/
public interface Jumpping {
public void jump();
}
package TEXT;
/*
动物抽象类
*/
public abstract class Animal{
private int age;//年龄
private String name;//姓名
public Animal() {
}
public Animal(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void eat();//吃饭方法
}
package TEXT;
/*
猫对象
*/
public class Cat extends Animal implements Jumpping {
@Override
public void jump() {
System.out.println("猫跳高");
}
public Cat() {
}
public Cat(int age, String name) {
super(age, name);
}
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
package TEXT;
/*
狗对象
*/
public class Dog extends Animal implements Jumpping {
@Override
public void eat() {
System.out.println("狗吃肉");
}
public Dog() {
}
public Dog(int age, String name) {
super(age, name);
}
@Override
public void jump() {
System.out.println("狗跳高");
}
}
package TEXT;
public class AnimalDemo {
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
cat.eat();
((Cat)cat).jump();//将cat强制转化为Cat再调用jump方法
//定义类型是Animal引用类型,Animal引用类型并无jump方法,因此需要强转
dog.eat();
((Dog)dog).jump();
System.out.println("----------------------");
Animal newCat = new Cat(20, "小白");
Animal newDog = new Dog(18, "旺财");
System.out.println("猫:" + newCat.getAge() + "+" + newCat.getName());
System.out.println("狗:" + newDog.getAge() + "+" + newDog.getName());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95045.html