接口、形参和返回值

接口、形参和返回值接口概述接口就是一种公共的规范标准 只要符合规范标准 大家都可以通用 Java 中的接口更多的体现在对行为的抽象

接口

概述
接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用。
Java中的接口更多的体现在对行为的抽象。




定义接口

public interface Jumpping { 
    public abstract void jump(); } 

类实现接口

public class Cat implements Jumpping{ 
    public void jump(){ 
    System.out.println("猫可以跳"); } } 

接口如何实例化?

Jumpping j=new Jumpping(); //报错,不能直接实例化 //可以参照多态的形式 Jumpping j=new Cat(); 

要是接口实现类不想重写接口中的方法,那么这个类就要定义为抽象类。

在这里插入图片描述

接口的成员特点

//接口 package myday; public interface Inter { 
    public abstract void eat(); } //实现类 package myday; public class InterImp implements Inter{ 
    //这种写法相当于: //public class InterImp extends Object implements Inter{} //因为接口中没有构造方法,所以实现类中的super();其实调用的是Object中的无参构造方法(空的) public InterImp() { 
    super(); } public void eat() { 
    System.out.println("啊啊啊"); } } 
//接口中: public void show(){ 
   };//报错,不能有非抽象方法 public abstract void show();//可以 void show();//可以,默认有修饰符public abstract 

在这里插入图片描述

//接口 package myday; public interface Inter { 
    public abstract void jump(); } //父类 package myday; public abstract class Animal { 
    public String name; public int age; public Animal() { 
    } public Animal(String name,int age) { 
    this.name=name; this.age=age; } public void setName(String name) { 
    this.name=name; } public void setAge(int age) { 
    this.age=age; } public String getName() { 
    return this.name; } public int getAge() { 
    return this.age; } public abstract void eat(); } //子类 package myday; public class Cat extends Animal implements Inter { 
    public Cat() { 
    } public Cat(String name,int age) { 
    super(name,age); } public void jump() { 
    System.out.println("猫跳高"); } public void eat() { 
    System.out.println("猫吃鱼"); } public void Catch() { 
    System.out.println("猫捉老鼠"); } } //测试 package myday; public class Demo { 
    public static void main(String[] args) { 
    Inter c1=new Cat(); c1.jump();//只能调用接口的重写方法 System.out.println("-----"); Animal c2=new Cat(); c2.setAge(15);//只能调用父类的重写方法 c2.setName("aaa"); System.out.println(c2.getAge()+","+c2.getName()); Cat c3=(Cat) c2; c3.Catch();//强转,可以调用子类的特有方法 } } 

类和接口的关系

类和类的关系:
继承关系,只能单继承,但是可以多层继承。
类和接口的关系:
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。






接口和接口的关系:
继承关系,可以单继承,也可以多继承。
在这里插入图片描述




抽象类和接口的区别

在这里插入图片描述
门有开关功能和报警功能。但并不需要所有门都有报警功能,所以如果把这三个功能都放在接口或者抽象类中,是不符合实际需求的。
解决方案为,开关门功能为所有门都有的功能,放在抽象类,报警功能放在接口,当门需要该功能时只需要实现接口即可。
在这里插入图片描述






类名作为形参和返回值

类名作为形参

//猫 package myday; public class Cat { 
    public void eat() { 
    System.out.println("猫吃鱼"); } } //猫操作类 package myday; public class CatOp { 
    public void useCat(Cat c) { 
    c.eat(); } } //猫测试类 package myday; public class Demo { 
    public static void main(String[] args) { 
    Cat c=new Cat(); CatOp op=new CatOp(); op.useCat(c); } } 

类名作为返回值

public Cat getCat(){ 
    Cat c=new Cat(); return c; } 

在这里插入图片描述
抽象类名作为形参

//抽象类 package myday; public abstract class Animal { 
    public abstract void eat(); } //实现类 package myday; public class Cat extends Animal{ 
    public void eat() { 
    System.out.println("猫吃鱼"); } } //操作类 package myday; public class AnimalAll { 
    public void useAnimal(Animal d) { 
    //Animal类作为形参,也就是抽象类 d.eat(); } } //测试类 package myday; public class Demo { 
    public static void main(String[] args) { 
    AnimalAll ao=new AnimalAll(); Animal a=new Cat(); //抽象类不能直接创建对象 //所以要父类引用的方法创建对象传入方法 ao.useAnimal(a); } } 

抽象类作为返回值

//抽象类 package myday; public abstract class Animal { 
    public abstract void eat(); } //操作类 package myday; public class AnimalAll { 
    public void useAnimal(Animal d) { 
    d.eat(); } public Animal getAnimal() { 
    Animal a=new Cat(); return a;//返回的是Animal类(抽象类) //所以父类引用创建子类对象 } } //子类 package myday; public class Cat extends Animal{ 
    public void eat() { 
    System.out.println("猫吃鱼"); } } //测试类 package myday; public class Demo { 
    public static void main(String[] args) { 
    AnimalAll ao=new AnimalAll(); Animal a=ao.getAnimal(); a.eat(); } } 

在这里插入图片描述

接口名作为形参和返回值

//接口 package myday; public interface Inter { 
    void jump(); } //接口实现类 package myday; public class InterIm implements Inter{ 
    public void jump() { 
    System.out.println("猫跳高"); } } //操作类 package myday; public class Interop { 
    public void usejump(Inter j) { 
    //形参为接口类 //接口类不能直接定义对象 //所以利用多态的形式创建对象 j.jump(); } } //测试类 package myday; public class Demo { 
    public static void main(String[] args) { 
    Interop j=new Interop(); Inter a=new InterIm(); j.usejump(a); } } 

接口名作为返回值

//接口类 package myday; public interface Inter { 
    void jump(); } //接口实现类 package myday; public class InterIm implements Inter{ 
    public void jump() { 
    System.out.println("猫跳高"); } } //操作类 package myday; public class Interop { 
    public void usejump(Inter j) { 
    j.jump(); } public Inter getjump() { 
    Inter j=new InterIm(); return j; } } //测试类 package myday; public class Demo { 
    public static void main(String[] args) { 
    Interop j=new Interop(); Inter a=j.getjump();//new InterIm() a.jump(); } } 

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201557.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午9:07
下一篇 2026年3月20日 上午9:08


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号