泛型:
也就是装在集合当中的所有元素,全部都是统一的什么类型。
泛型只能是引用类型,不能是基本类型。
关于引用类型与基本类型的区别::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