一、抽象类


    1、为什么要有抽象类?


        class Animal{
            //eat()和speak()具体应该怎么写呢?没法写
            public void eat(){
            }
            //多个子类存在差异化的行为,此时可以将行为声明为抽象方法
            public void speak();
        }

abstract(抽象的):可以用来修饰的结构:类、方法
1.用abstract关键字来修饰一个类时,这个类叫做抽象类;
2.用abstract来修饰一个方法时,该方法叫做抽象方法。


    2、语法


        abstract class 类名{
            public abstract void 方法名();
        }
        注意:
            ①抽象类是用来继承的,不能实例化
            ②抽象类可以有构造方法便于子类调用
            ③抽象类的子类必须重写父类的抽象方法
            ④抽象类可以有普通方法(抽象类和类的区别)

匿名类(匿名子类)是不能有名字的类,它们不能被引用,只能在创建时用new语句来声明它们。
语法:
new抽象类/接口(){
//匿名类代码
};

二、接口(interface)

1、为什么要有接口

有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。

2、什么是接口

Java是特殊的抽象类,接口使用interface来定义
语法:
public interface InterfaceA{
}
public class SubClass implements InterfaceA{
}

3、接口的特点

1.接口(interface)中只能定义全局常量和抽象方法

2.接口中不能定义构造器不可以实例化

3.Java类可以实现多个接口

4、接口与接口之间可以继承,而且可以多继承

4、jdk8 接口的新特性

Java8中,你可以为接口添加静态方法和默认方法(default)。

三、常用类

1、Object


    1、作用

Object是类层次结构的根,每个类都可以将Object作为超类。换句话说,该类所具备的方法,所有类都会有一份。(万类之祖)


    2、常用api


        equals():作用是比较对象是否相等,默认this == obj
        hashCode():返回对象的哈希值(即对象的唯一标识符),默认native int hashCode(),即hash(内存地址)
        toString():打印对象,默认getClass().getName() + "@" + Integer.toHexString(hashCode());



    3、==和equals的区别


                                ==           equals
        基本类型         值
        引用类型         内存地址      内容


    4、hashcode和equals的关系


        equals相等则hashCode一定相等
        hashCode相等则equals不一定相等

    5、toString()方法

toString()方法在Object类中定义,打印对象时调用,返回一个包含类名、@符号和对象哈希码十六进制值的字符串:

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐