目录
接口
抽象方法就是体现一种规则。如果一个抽象类中的方法全部是抽象方法,那么这个类就是java中的一个接口类,需要将abstract class变为interface定义接口。
接口功能:扩展事物的功能
接口和子类之间不是继承关系,而是实现关系,子类称为实现类,使用关键字implements替换externs
定义实现类时的命名规范:前半部分为接口名后半部分为impl
实现类可以多实现接口,中间用,隔开(因为接口的抽象方法没有具体逻辑),并且可以与继承同时使用,如果继承的父类中的方法与接口中的抽象方法重复,则不需要再重写这个抽象方法
接口中的成员变量前面默认加final,public和static,为自定义常量,实现类中无法对其修改,命名时应按照final的名字格式进行,但可以在实现类中使用
接口中没有构造方法,实现类中访问的是Object的构造方法,因此接口在定义成员变量时必须赋值。
通过接口名调用接口中的常量
接口中不能存在普通方法,定义的方法前默认加上public abstract
接口与接口之间可以存在继承关系,继承父类接口的抽象方法,并且子类接口可以多继承
JDK8,9之后接口有一些新特性
多态
同一对象在不同时刻的不同形态
前提条件:1.有继承/实现的关系2.有方法的重写(不必要,父类没有抽象方法可以不重写)3.有父类引用指向子类对象(Employee e=new Coder())(多层继承也可以)
父类引用指向子类对象时,调用成员变量时使用的为父类的成员变量(编译和运行均看左边父类),因为父类的引用指向super,看不到子类的成员变量
父类引用指向子类对象时,调用成员方法时使用的为子类的成员方法(编译看左边父类和运行均看右边子类),因为父类的成员方法可能是抽象方法
多态创建对象时,构造方法无影响
好处:可以通过父类引用指向子类对象时简化代码,提高代码的扩展性(形参为父类,实参就可以为其任意子类)。弊端:不能调用父类中没有,子类中特有的成员方法(解决办法:1.创建子类对象2.向下转型)
转型:正常定义父类引用指向子类对象就是向上转型。如果要调用子类特有的方法,有两种方式(1.创建子类对象 2.向下转型)子类引用指向之前定义的父类对象(需要用到强制转换Zi z=(Zi)fu)
如果采用向下转型来使用子类的特有成员方法,因为在方法中传参,多态不一定只传一种子类,会遇到类型转换异常(强转时,实际类型和目标类型不一致),通常需要用到判断,这里的判断关键字是instanceof(a instanceof cat表示a是不是猫,对象 instanceof 类)
窗体组件
JFrame()类 getContentPane()方法获取面板,无参数,返回值为Container对象类型(在getContentPane方法中创建的Container对象)
JButton()类 空参构造:没有内容的按钮。带参构造,参数为按钮上的信息
Contanier()类add()方法,参数为组件,将组件添加入面板(通常采用链式编程),位置覆盖时,显示先添加的,后添加的数据为从底部塞进去的
JFrame()类setLayout(null)取消面板默认布局(默认布局为组件布满面板)
JButton()类setBounds()方法,参数为x,y,width,height
Jlabel()类用于展示文本和图片,空参构造什么都不带,带参构造:字符串为文本区域,图片对象为图片区域
ImageIcon类用于加载图片,带参构造函数参数为图片路径(应该使用两个\)
监听
事件监听机制:监听的对象称为监听源(如按钮,图片等),对事件源进行的操作称为事件(如按下键盘,事件一般为接口,无法直接使用,需要创建实现类),完成事件后触发的反馈称为绑定监听。Java中监听都是接口的形式
(ActionListener 动作监听:包括鼠标左键点击和空格按键的监听)
(KeyListener 键盘监听:keyType方法监听键位不全,一般不使用)
(MouseListener 鼠标监听:)
JButton()类addActionListener()方法,参数为ActionListener接口类型,应该传入接口的实现类对象
监听源可以通过有参构造从测试类传入实现类
KeyEvent()类中getKeyCode()方法,无参数,返回按下键盘的ASCII码(int类型)
焦点:有组件时会产生焦点,导致无法对窗体进行监听
其他
ctrl+shift+u将选中的英文大写
空白区域diagrams-》show diagram显示类的继承实现结构图
main 的参数早期用于键盘录入,现在没有实际意义