封装:按照信息隐藏的原则,将数据组织在一起,封装的两个特点:信息的集合,信息的隐藏

私有属性加get set方法和公有属性的区别
私有属性不能直接访问,只能通过set方法进行属性的设置,通过get方法进行属性的访问,所以可以通过删除set方法或get方法,将属性做成
只读或只写属性,这一点公有属性做不到
私有属性在设置之前,可以在set方法中,完成属性值有效性的判断,可以避免非法数据的录入,公有属性做不到

私有属性同样可以被子类所继承,只不过不能被子类直接访问,这是因为创建子类之前,会先产生父类对象,所以子类对象中包含一个完整
的父类对象,也就包含父类对象中的一切数据

静态块:static{}只在类加载时执行一次,一般用于一些初始化配置,而构造方法是每产生一个新对象都会执行
实例化块:在每个对象产生时都会执行一次,在super()之后执行

内部类:在一个类中再定义一个类,该类称为内部类,内部类相当于外部类的属性,内部类对象的产生必须依赖外部类对象,内部类生成的
class文件命名规范:外部类名$内部类名.class

多态:允许一个父类变量引用于子类的对象,允许一个接口类型变量引用实现类对象,反过来却不行(相同的行为,不同的实现)
多态调用时,利用父类变量指向子类对象,调用的方法和属性只限于父类中定义的方法和属性,不能调用子类中特有的方法和属性

多态的主要应用:多态参数,多台集合
向上转型:小类型对象可以直接被大类型的变量引用
向下转型:大类型对象转化为小类型时必须强转
当试图将对象强制转换成不是实例的子类时抛出异常:java.lang.classcastException
多态总结:使用父类类型的引用指向子类的对象
该引用只能调用父类中的一个方法,不能调用子类中独有的方法
如果子类中重写了父类中的一个方法,那么在调用该方法时将会调用子类中的这个方法
在多态中子类可以调用父类中的所有方法
多态主要体现在重载和重写,相同的行为,不同的实现
如果一个方法只有方法的定义,没有方法的具体实现,那么该方法称为抽象对象,用修饰词adsract定义,将有抽象对象的类称为抽象类
,也用于修饰abstract定义,抽象类不能直接实例化,抽象类变量只能指向子类对象
如果一个类继承一个抽象类,那么必须重写抽象类中定义的所有方法,否则编译错误
抽象方法必须由子类提供具体的实现,所以不能是私有的,抽象方法也不能是静态的,静态方法加载时机在对象之前
接口:可以看作是抽象类的特例,抽象类中可以定义抽象方法,也可以定义具体方法,但在接口中只能定义抽象方法,所以接口可以看作是
行为的抽象
如果一个类实现接口后,那么可以使用接口变量指向实现对象,所调用的方法就是实现类实现的方法
如果一个方法使用接口做参数,意味着可以传递任何一个接口的实现对象。在接口中只能定义抽象方法,并且该方法只能是公有的抽象方法
不能用protected和private修饰接口中的方法
在接口中不能定义属性,只能定义公有的静态的变量、

接口可以继承接口,并可以多继承接口,如果一个类要实现一个接口那么除了实现接口中定义的抽象方法,还要实现该接口父接口定义的
抽象方法。
抽象类和接口的区别和联系
1、抽象类和接口都不能被直接实例化,抽象类的变量只能指向子类对象,接口变量只能指向实现类的对象
2、抽象类中可以定义抽象方法,可以定义具体方法,但是在接口中只能定义抽象方法
3、抽象类中定义的变量是普通属性,在接口中定义的变量,只能是公共的静态的常量
4、抽象类中只能单根继承,但接口可以多实现。


事件监听实现步骤:1、确定事件源
2、确定监听器
3、注册,建立事件源和监听器的联系