• java基础二


    泛型:

    也就是装在集合当中的所有元素,全部都是统一的什么类型。

    泛型只能是引用类型,不能是基本类型。

    关于引用类型与基本类型的区别::https://blog.csdn.net/qq_31071255/article/details/82192075

    在使用==时,对于基本类型来说,==是进行数值的比较,对于引用类型来说,==是进行地址值的比较

    从jdk1.5+开始支持,自动装箱和自动拆箱

    自动装箱:基本类型 -----》 自动变成引用类型,,,包装类型

    自动拆箱:包装类型------》 基本类型

    String的构造方法和直接创建

    public string()

    public String(char[] array)

    public String(byte[] array)

    覆盖重写,@override,写在方法前面,检测是不是有效的覆盖重写,这个注解不写,只要满足条件也是覆盖重写,相当于是个检测手段,子类方

    法的返回值,必须小于等于父类方法的返回值范围

    JAVA中的接口

    1、成员变量其实是常量,格式

    【public】【 static】【 final】  数据类型  常量名 =数据值

    注意:常量必须进行赋值,而且一旦赋值就不能改变,常量名必须大写,用下划线进行分割

    2、接口中的抽象方法

        【public】【 abstract】 返回值类型 方法名称(参数列表);

    注意,实现类必须覆盖重写接口所有的抽象方法

    3、从JAVA8开始接口允许定义默认方法,格式

    【public】 default 返回值类型 方法名称(参数列表)(方法体)

    4、从JAVA8开始接口允许定义静态方法,格式

    【public】 static 返回值类型 方法名称(参数列表){方法体}

    注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法

    5、从Java9开始,接口里允许定义私有方法,格式

    普通私有方法 private 返回值类型 方法名称(参数列表){方法体}

    静态私有方法 private static 返回值类型 方法名称(参数列表){方法体}

    注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。

    JAVA中的抽象类

    抽象类就是为了继承而存在

    如果父类当中的方法不确定如何进行{}方法体的是实现,那么这就应该是一个抽象方法

    1、不能直接创建抽象类对象,用一个子类来继承抽象类

    2、子类必须实现(覆盖重写)抽象类中的抽象方法

    3、创建子类进行使用

    注意事项:

    1、抽象类不能直接创建对象

    2、抽象类中可以有构造方法,是供子类创建对象时,初始化父类成员使用的,理解:子类的构造方法中,有默认的super(),需要访问父类构造方法

    3、抽象类中,不一定包含抽象方法也可以有普通方法也可以什么也没有(适配器模式),但是有抽象方法的类必须是抽象类

    4、抽象类的子类,必须重写抽象父类中所有的抽象方法,除非该子类也是抽象类

    抽象类与普通类的区别

      包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:

     1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

     2)抽象类不能用来创建对象;

     3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

     在其他方面,抽象类和普通的类并没有区别。

    抽象类和接口有什么区别呢

    1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

    2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

    3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

    4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    我们看个网上流传很广的例子:门和报警

    门都有open和close的动作我们可以用抽象类和接口来定义这个抽象的概念

    public abstract class Door {
        public abstract void open();
        public abstract void close();
    }
    
    public interface Door {
        void open();
        void close();
    }

    现在门有了打开和关闭的功能,现在我们需要增加一个报警的功能,那么该如何实现

    两种思路:

    1、将三个功能放在抽象类中,但是这样一来所有继承于这个抽象类的子类都具备了报警的功能,但是所有的门又不一定都有报警的功能

    2、将三个功能都放在接口里面,需要用到报警功能的类就需要实现这个接口中的报警功能,但是也许这个类根本不需要open和close方法,必须火灾报警器

    从上面可以看出,door的open、close和alarm根本就属于两种不同的范畴内的行为,open和close属于,门的特性,而报警属于延伸功能

    因此最好的办法是单独将报警设计为一个接口,包含alarm的行为,Door单独设计为一个抽象类,包含close和open两种行为,再设计一个

    报警门,继承Door类和实现Alarm接口

    public interface Alarm{
        void alarm();
    }
    
    public abstract class Door{
        void open();
        void close();
    }
    
    public class AlarmDoor extends Door implements Alarm{
        void open(){
        }
        void close(){
        }
        void alarm(){
        }
    }

     部分内容转载:https://www.cnblogs.com/xiaoxi/p/6599843.html

  • 相关阅读:
    2019 icpc西安邀请赛 点分治
    2019ccpc 秦皇岛
    hdu 5354 树上点分治
    cf 632E FFT+快速幂
    hdu 4812 树分治+逆元+手写hashmap
    2019 上海网络赛G 手写哈希map+字符串hash
    2019 上海icpc网络赛 C FFT优化卷积+小范围暴力
    hdu 6198 杜教BM
    洛谷P3804 后缀自动机
    集合总结
  • 原文地址:https://www.cnblogs.com/Robertzewen/p/10985116.html
Copyright © 2020-2023  润新知