• (1)抽象类 (2)接口 (3)内部类 (4)Object类


    1.抽象类(重点)
    1.1 抽象方法的概念
    抽象方法就是指不能具体实现的方法,也就是该方法没有方法体,使用abstract关键字修饰
    如:
    public abstract void cry();

    1.2 抽象类的概念
    抽象类就是不能具体实现的类,也就是不能实例化对象,使用abstract关键字修饰。

    1.3 注意事项
    a.抽象类中可以有成员变量、成员方法以及构造方法。
    b.抽象类中可以有抽象方法也可以没有。
    c.具有抽象方法的类必须是抽象类,因此很多资料上认为具有抽象方法并且使用abstract
    关键字修饰的类才为真正意义上的抽象类。

    1.4 抽象类的意义
    抽象类的意义不在于自身创建对象而在于被继承,当一个类继承抽象类之后必须要重写继承下来的抽象方法,否则该类也得变成抽象类。
    因此,抽象类对子类具有强制性和规范性,通常叫做 模板设计模式。

    经验的分享:
    在以后的开发中推荐使用父类引用指向子类对象的方式,因为父类引用直接调用的所有方法一定是父类中拥有的方法,若后续调试中需要更换子类时,只需要将new后面的子类类型修改完毕而其它所有代码不动就立刻生效,从而提高了代码的可维护性和可扩展性。
    该方式的缺点:不能直接调用子类独有的方法,若调用则需要强制类型转换。

    练习:
    自定义Account类,特征有:账户余额,要求实现封装并提供计算利息并返回的抽象方法;
    自定义FixedAccount类继承Account类,在main()方法中使用多态的语法设置余额并计算利息,最后打印出来。

    2.接口(重点)
    2.1 基本概念
    接口本质上就是一种比抽象类还抽象的类,也就是依然不能实例化对象。
    定义抽象类使用class关键字,而定义接口使用interface关键字。

    2.2 类和接口之间的关系
    类和类之间的关系 使用extends关键字表达继承的关系 支持单继承
    类和接口之间的关系 使用implements关键字表达实现的关系 支持多实现
    接口和接口之间的关系 使用extends关键字表达继承的关系 暂时认为单继承

    2.3 抽象类和接口之间的区别(笔试题)
    (1)定义抽象类使用class,而定义接口使用interface关键字。
    (2)继承抽象类使用extends,而实现接口使用implements关键字。
    (3)继承抽象类支持单继承,而实现接口支持多实现。
    (4)抽象类中可以有构造方法,而接口中不可以有。
    (5)抽象类中可以有成员变量,而接口中全部是常量。
    (6)抽象类中可以有成员方法,而接口中全部是抽象方法。
    (7)抽象类中增加方法可以不影响子类,而接口中增加方法一定会影响子类。
    (8)从jdk1.8开始允许接口中出现带有方法体的方法,但需要使用default关键字修饰。

    3.内部类(了解)
    3.1 基本概念
    当一个类的定义放在另外一个类的类体中时,把这个放在内部的类叫做内部类,该类所在的类叫做外部类。
    类的内容:成员变量、成员方法、构造方法、构造块和静态语句块、内部类。

    3.2 语法格式
    class 类名{
    class 类名{
    内部类的类体;
    }
    }

    3.3 基本功能
    当一个类存在的价值仅仅是为某一个类单独服务时,此时就可以将该类定义为内部类,内部类可以直接访问所在类的私有成员变量而不再需要提供公有的get和set方法。

    3.4 基本分类
    普通内部类 - 直接将一个类的定义放在另外一个类的内部。
    静态内部类 - 使用static关键字修饰的内部类。
    - 只有内部类才可以使用static关键字修饰。
    局部内部类 - 直接将一个类的定义放在方法体的内部。
    - 局部内部类只在方法体的内部有效。
    匿名内部类 - 没有名字的内部类,通常用于构造父类/接口类型的对象。

    3.5 匿名内部类(重点)
    (1)语法格式
    父类/接口类型 引用变量名 = new 父类/接口类型(){
    进行方法的重写;
    };

    (2)经验的分享
    当接口类型的引用作为方法的形参时,实参的传递方式有两种:
    a.自定义类实现接口,然后new该实现类的对象作为实参传递;
    b.采用匿名内部类的语法格式得到给接口的引用作为实参传递;

    多态的使用场合:
    a.直接在方法体中使用多态的形式
    Person p = new Student();
    b.通过方法的参数传递来形成多态
    public static void test(A a){ ...}
    A a = new SubA();
    TestA.test(a); => TestA.test(new SubA())
    c.通过方法的返回值来形成多态
    public Person show(){
    return new Student();
    }

    4.Object类
    4.1 常用的包
    java.lang包 - 该包是Java语言的核心包,该包中的所有内容由Java虚拟机自动导入。
    - 如:String类、System类等
    java.util包 - 该包是Java语言的工具包,该包中提供了大量的工具类和集合类等。
    - 如:Scanner类、Random类等
    java.io包 - 该包是Java语言的输入输出包,该包中包含了大量读写文件相关的类等。
    - 如:FileInputStream类等。
    java.net包 - 该包是Java语言的网络包,该包中包含了大量网络编程相关的类等。
    - 如:ServerSocket类等。
    ... ...

    4.2 Object类
    (1)基本概念
    java.lang.Object类是类层次结构的根类,任何类都是该类的直接或间接子类。

    (2)常用的方法
    Object() - 使用无参的方式来构造对象。
    boolean equals(Object obj) - 用于判断调用对象是否和参数对象相等。
    int hashCode() - 用于获取调用对象的哈希码值(内存地址的编号)。
    String toString() - 用于获取调用对象的字符串表示形式并返回。

    不忘初心,方得始终! 坚持!坚持!坚持!!
  • 相关阅读:
    hadoop的namenode故障处理方法
    hadoop的checkpoint检查时间参数设置
    hadoop配置历史服务器&&配置日志聚集
    hadoop_批量命令脚本&同步文件脚本
    查看centos操作系统、java_jdk、hadoop位数
    hadoop的namenode启动失败
    shell_语法
    Mycat入门配置_读写分离配置
    VM虚拟机克隆_修改网络
    ssh免密登陆及时间设置
  • 原文地址:https://www.cnblogs.com/sumboy/p/8604743.html
Copyright © 2020-2023  润新知