java有23种设计模式
* 面向对象特征:抽象
* Java中除了类,还有接口和抽象类
* 关键字:abstract 抽象
* 抽象方法:没有方法体
* 能传参,唯一的区别就是没有大括号,加了abstract
* 抽象方法存在的意义:约定(自定义的规则),约定了子类重写什么
* 到底约定了什么,规定了什么,定了哪些规则?
* 约定了返回值,
* 约定了访问权限
* 约定了参数列表
* 在重写的时候定义方法体
* 约定>配置>编码
* 抽象方法必须在一个抽象类
* public abstract class ...()
* public abstract void/返回值类型 ....()
* 有属性,成员方法,抽象方法,构造器,常量
* 抽象类中可以没有抽象方法(不写抽象方法没必要写抽象类),但是抽象类不能直接创建对象,抽象方法不能没有抽象类
* 抽象类不能被直接实例化,直接new不行,但是靠子类向上转型可以(披着羊皮的狼)
* 抽象类构造器存在的意义也是为了约定子类的构造器与父类匹配
* 一个类如果继承了一个抽象类,就必须重写这个抽象类的所有抽象方法
* abstract只能修饰类,方法,没有抽象属性
* 构造器的写法定死,什么都加不了,除了括号里。
* 抽象方法能不能用private修饰
* 不能(只有private不行,因为抽象需要子类重写,private权限只有本类,不能被子类重写)
* 抽象方法能不能用final修饰?
* 不能(用final修饰的方法不能重写)
* 抽象类能不能用final修饰?
* 不能(被final修饰不能被继承)
* 特殊:默认权限也是public,写不写都是public
* 一个类只能继承一个抽象类(父类只能有一个)
* 抽象类可以继承普通类
* 抽象类继承抽象类不用重写,普通类必须重写
* 如果子类没有实现父类的抽象方法,必须将子类也定义为abstract
*
* 接口:比抽象类更高级的抽象
* 关键字:interface
* 类的形式(直接去掉class或abstract class):public interface...{}
* 接口中只能有抽象方法(还可以放静态常量,静态方法即主方法和默认方法),不能有属性,不能有方法和构造器
* 也是为了约定
* JDK7-JDK8 默认方法,静态常量,抽象方法
* 不能直接实例化
* 接口中结构的特点:
* 接口中的方法默认是public,推荐省略
* abstract也可以省略不写
* 接口中的常量默认是public static final,可以省略不写
* 接口中的结构必须是public
* 实现接口需要重写接口中所有的抽象方法
* 实现接口能多实现(中间用,隔开),继承只能单继承
* 开发中,如果一件事可以通过继承和实现接口来解决问题,优先使用选择接口解决
* 抽象和接口都需要重写所有的方法
* 面向接口编程
* 可以多态。可以接口指向实现类
* 接口和接口之间可以多继承,类与类之间只有单继承
*
* 继承自...实现...
* public class 类名 extends ... implements ...{}
* 
* 匿名实现类
学习心得:今天学的知识都能理解
问题:foreach语句怎么用一直没弄明白,什么情况下需要遍历,应该打印输出什么