zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/Robertzewen/p/10985116.html
Copyright © 2011-2022 走看看