Java_类和对象(多态 接口)

接口

  • 多个无关的类可以实现同一个的接口.
  • 一个类可以实现多个无关的接口.但只能继承一个抽象类.
  • 接口中的属性只能是public static final的.
  • 方法只能是抽象的.
  • 接口中继承的关键字是 implements.
  • 抽象类可以有构造方法.

接口和类的相似点

  • 一个接口可以有多个方法.
  • 接口文件保存在.java结尾文件中.,文件名使用接口名.
  • 接口的字节码文件保存在.class结尾的文件中.
  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中.

接口与类的区别

  • 接口不能用于实例化对象.
  • 接口没有构造方法.
  • 接口中的所有方法必须是抽象方法.
  • 接口不能包含成员变量,出了static和final变量.
  • 接口不是被类继承了,而是被类实现了.
  • 接口支持多继承.

抽象类和接口的区别

  • 抽象类可以定义非抽象方法,接口不行(必须是抽象方法).
  • 抽象类有构造方法,接口没有.
  • 一个类只能继承一个抽象类,而一个类可以实现多个接口.(接口可以多继承).

接口的案例

public interface Carepet {
    public  void play();
    public  void eat();
    

}
interface playgrame{
    public void plays();
}

class work implements Carepet,playgrame
{
    public static void main(String[] args) {
        Carepet carepet = new work();
        work w = (work)carepet;
        w.plays();
        w.play();
        w.eat();
        
    }
@Override
    public void play() {
        System.out.println("在工地上完");
        
    }
@Override
    public void eat() {
        System.out.println("吃剩饭");
    }
@Override
    public void plays() {
        System.out.println("在网吧玩游戏");
        
    }
}
class farmer implements Carepet{

    @Override
    public void play() {
        System.out.println("在农场玩");
        
    }
@Override
    public void eat() {
        System.out.println("吃饭");
        
    }
}

class leader implements Carepet{

    @Override
    public void play() {
        System.out.println("在操场玩");
        
    }

    @Override
    public void eat() {
        System.out.println("吃专用粮");
        
    }
    
}

多态

  • 父类引用指向子类对象. [Animal a = new Cat()]
  • 必须有继承.
  • 重写.
  • 强制类型转换 Animal a = new Cat() Cat c = (Cat)a;
    *instanceof 判断真实类型

多态案例

public class Test1 {
    public static void main(String[] args) {
        //Cat cat = new Cat();
        Animal a = new Cat();
        a.eat();
        //instanceof  当父类中没有子类的方法的时候需要强转     判断a的真实类型是不是cat.
        if (a instanceof Cat) {
            System.out.println("猫类");
            Cat c = (Cat) a;//强制类型转换
            c.sleep();
            }
    }
}
class Animal{
    void eat(){
        System.out.println("动物吃");
        }
}

class Dog extends Animal{
    @Override
    void eat() {
        System.out.println("狗狗爱吃骨头");;
    }
}

class Cat extends Animal{
    @Override
    void eat() {
        System.out.println("猫爱吃鱼");;
    }
    void sleep(){
        System.out.println("猫睡觉");
    }
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,248评论 0 2
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,396评论 0 2
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,190评论 0 4
  • 一.成员变量与局部变量的区别 成员变量:在类中定义,用来描述对象将要有什么(属性)。可被本类方法和其他跟当前类有关...
    jeffierw阅读 611评论 0 0
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,789评论 0 11

友情链接更多精彩内容