java 接口&Object

接口&Object
一、接口
接口:
接口的概念:接口一般情况下不创建对象
    1、
        接口是功能的一个集合,同时也是一种引用数据类型。接口是比"抽象类",更抽象的"类"
    2、
        接口只描述程序所应该具备的方法,这些方法都没有具体的实现,从jdk1.8之后有改变
        接口在jdk 1.8 之后可以添加静态的方法和default修饰的方法,这些方法可以有实现体
    3、
        个人认为:接口是一种身份的象征,
        比如:
        实现Runnable : 创建线程的时候使用的
        实现Cloneable : 可以进行克隆
        实现Comparable<引用数据类型>:可以进行比较

接口中可以定义什么:
    常量: 默认使用 public static final 进行修饰
    抽象方法: 默认使用 public abstract 修饰
    没有实现体的方法
    在jdk 1.8 之后可以添加静态的方法和default修饰的方法

接口的语法:
    //定义在.java文件中
    //接口也可以继承接口
    public interface 接口名 extends 接口{
        公有的静态常量;//public static final 数据类型 = 赋值;  public static final int age = 16;
        抽象方法:
            public abstract 返回值类型 方法名();
        普通方法,但是没有实现体
        public 返回值数据类型 方法名(参数);

        //jdk 1.8之后
        public default void 方法名(){
        }
        public static void 方法名(){
        }
    }

访问接口中的静态常量
    接口名.常量名;//常量的值不可以修改

访问接口中的静态方法
    接口名.静态方法名(参数值);
    可以调用static修饰的方法,不能调用default修饰的方法

    如果想要调用default修饰的方法需要创建实现类的对象然后再调用
    如果一个类实现多个接口,接口中有同名的default方法,实现类就必须重写,调用的是重写的


类与接口之间的关系:纵向关系 实现关系
    实现类实现了接口之后,相当于声明:我具备了这个接口中的功能
    类实现了接口之后,必须实现接口中所有没有实现体的方法

一个实现类,可以实现多个接口,只能继承一个父类。继承和实现可以同时存在
   public class 实现类名称 extends 父类 implements 接口名1,接口名2{

   }
接口特点:
    接口中定义变量,默认是一个静态常量常量的值不会改变,
        如果是基本数据类型,值不变
        如果是引用数据类型,地址不变

    方法static default方法两个特殊的内容

    接口不能创建对象

    实现类必须实现接口所有的方法才能创建独享
        如果不想实现接口中的方法, ---- 留个坑
        抽象类, 抽象方法,

    类与类 单继承
    类与接口 多实现
    接口与接口之间 多继承
    一个类继承于一个父类的同时,可以实现多个接口

为什么要定义接口
    原因:
    接口可以解决单继承的问题
        一个类只能有一个父类
        一个类可以有多个父接口
        接口的出现避免了单继承的局限性,父类中定义的事务的基本功能
        接口中定义事务扩展功能
    好处:
        接口的出现,降低了类与类设备与设备之间的耦合度(关联性)
        接口的实现方便了后期的使用和维护

在接口的实现过程中
    1、多个类可以实现同一个接口
    2、同一个类可以实现多个接口
    3、一个类继承于另外一个类的同时可以实现多个接口
    4、接口不可以实现接口
    5、接口不可以有构造函数
    6、接口可以继承接口,并且可以多继承
    7、如果子类继承于父类,并且父类实现了一个接口,将接口中的方法全部实现
       子类不需要再去实现父类的接口中的方法


二、Object类
    1、是所有类的父类
        你自己声明一个类的时候,没有指定父类的时候,默认继承于object
        public class Animal extends Object{}

    2、toString():
        Object类提供了一个方法 toString() 所有类都有toString方法
        作用:使用字符串表示对象
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
        com.j2201.objectDemo.Car@4554617c

        Object object = new Object();
        System.out.println(object.getClass());//class java.lang.Object
        System.out.println(object.getClass().getName());//java.lang.Object
        int hashCode = object.hashCode();
        System.out.println(hashCode);//对象的哈希地址 1956725890

        Object object1 = new Object();
        System.out.println(hashCode);//1956725890

    3、getClass()方法
        作用:返回运行时类(对于初学的同学来说,这个方法不要纠结,后期在集合讲完之后有一个内容
             反射)
    4、equals(Object object)方法
        作用:比较两个对象是否相等
    5、 == 运算符
        情况1:基本数据类型比较值是否相同
        情况2:引用数据类型比较地址是否相同
    6、finalize()方法
        垃圾回收机制:
            比如你的程序中的一个功能,长时间不实用,垃圾回收机制就会认为这个程序属于
                不会再被调用的功能,就会将这个功能占用的内存空间进行回收释放
            这个方法不是由程序员进行调用,jvm调用的
            当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。
    7、clone()方法
        只有实现了Cloneable接口的类的对象才能调用这个方法
        这个方法会产生一个新的对象

    8、instanceof
        作用:判断两个对象是否是同一个类型
        使用规则:boolean 变量名 = obj instanceof 类型(和obj有继承关系的类);
        obj 是否属于指定的类型
        会自己判断继承关系
            子类对象 instanceof 父类类型 会返回true
        这个对象是属于这个类 这个对象是否属性这个类的父类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值