/**
* 一、Java继承
* 1.继承的概念
* 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
* 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,
* 或子类从父类继承方法,使得子类具有父类相同的行为。
* 2.extends关键字
* 在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
* 3.implements关键字
* 使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,
* 可以同时继承多个接口(接口跟接口之间采用逗号分隔)。
* 4.final关键字
* final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:
* 5.构造器
* 子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,
* 则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的参数列表。
* 如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,
* 如果没有使用super关键字,系统会自动调用父类的无 参构造器。
* 6.this 关键字
* this 关键字表示当前对象。可用于:
* 调用当前类的构造方法,并且必须是方法的第一条语句。如:this();调用默认构造方法。this(参数);调用带参构造方法。
* 限定当前对象的数据域变量。一般用于方法内的局部变量与对象的数据域变量同名的情况。
* 如 this.num = num。this.num 表示当前对象的数据域变量 num,而 num 表示方法中的局部变量。
*
* 二、Java 封装
* 1.概念
* 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
* 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
* 要访问该类的代码和数据,必须通过严格的接口控制。
* 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
* 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
* 2.封装的优点
* ①良好的封装能够减少耦合。
* ②类内部的结构可以自由修改。
* ③可以对成员变量进行更精确的控制。
* ④隐藏信息,实现细节。
* 3.实现Java封装的步骤
* ①private②set(),get()
*
* 三、Java 多态
* 1.概念
* 多态是同一个行为具有多个不同表现形式或形态的能力。
* 2.多态的优点:消除类型之间的耦合关系;可替换性;可扩充性;接口性;灵活性;简化性
* 3.多态存在的三个必要条件:继承;重写;父类引用指向子类对象
* 例:Parent p = new Child();
* 4.多态的实现方式
* 方式一:重写
* 方式二:接口interface
* 1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,
* 因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
* 2. java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。
* 方式三:抽象类和抽象方法
*
* 四、Java 接口
* 1.概念
* 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。
* 一个类通过继承接口的方式,从而来继承接口的抽象方法。
* 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
* 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
* 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
* 另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
* 2.接口与类相似点:
* 一个接口可以有多个方法。
* 接口文件保存在 .java 结尾的文件中,文件名使用接口名。
* 接口的字节码文件保存在 .class 结尾的文件中。
* 接口相应的字节码文件必须在与包名称相匹配的目录结构中。
* 3.接口与类的区别:
* 接口不能用于实例化对象。
* 接口没有构造方法。
* 接口中所有的方法必须是抽象方法。
* 接口不能包含成员变量,除了 static 和 final 变量。
* 接口不是被类继承了,而是要被类实现。
* 接口支持多继承。
* 4.接口特性
* 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract
* (只能是 public abstract,其他修饰符都会报错)。
* 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量
* (并且只能是 public,用 private 修饰会报编译错误)。
* 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
* 5.抽象类和接口的区别
* ①抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
* ②抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
* ③接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
* ④一个类只能继承一个抽象类,而一个类却可以实现多个接口。
* 五、集合(容器)
* 1.接口:Collection<-List(采用线性列表的存储方式,长度可动态改变),<-Set ;Map(采用键-值对的存储方式,长度可动态改变)
* 2.具体类:List<-ArrayList,LinkedList ; Map<-HashMap
* 3.Set和List的区别
* ①Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
* ②Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
* ③List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。
* 查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
* 4.注:
* ①Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素,
* Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
* ②Set 具有与 Collection 完全一样的接口,只是行为上不同,Set不保存重复的元素。
*
* 六、泛型的学习:
* 泛型的使用:1.可以避免 集合 传入了不需要的类型的对象(指定集合中对象的类型)
* |---- List list = new ArrayList();
* 2.控制在类中传入的对象类型
* |---- class DAO{
* public T get(){
* }
* }
* 可自定义泛型类
* |---- class Box {}
* 泛型方法
* |---- public E getE(E e){
* return e;
* }
*
* @author Missy
*/