知识点总结:
一、封装:
私有属性,把成员变量的访问修饰符声明为private;
公开方法对属性赋值和取值,声明getXXX() 和 setXXX()方法;
二、继承:
在java中是单继承关系,但是可以实现多重继承;
在实例化子类时,先执行父类的构造方法,再执行子类的构造方法;
子类可以继承父类非私有的属性和方法,不能继承构造方法;
当父类的方法无法满足子类需要时,子类可以重写父类方法;
在子类中,使用super关键字表示父类对象,可以用在非静态方法中;
super()表示父类构造器,只能用在子类的构造器中,并且是在构造器的第一行;
this代表当前子类对象,可以使用在子类的非静态方法中;
this()表示子类的构造器,只能用在子类的构造器中,并且是在构造器的第一行;
不能和super()同时出现;
当类使用final关键字修饰时,该类不能被继承;
**重写规则:**
重写方法的声明部分(返回值类型、方法名、参数列表)要和父类中的方法保持一致;
重写方法的访问权限要大于等于父类的方法;
重写方法可以抛出任意的非强制性异常,如果父类方法中抛出了异常,子类中的重写方法抛出异常的范围要小于等于父类;
当父类的方法使用final关键字修饰时,可以被继承,但不能被重写;
当父类的方法使用static修饰时,可以被继承,不能被重写,但是可以在子类中重写声明;
(排除final和static关键字的情况下)
如果在同包下,子类可以重写父类的非私有的方法;
不在同包下,子类只能重写父类的public和protected修饰的方法;
不能被继承的方法,不能重写,例如:构造方法;
三、多态:
继承;
方法重写;
父类引用指向子类对象(向上转型);
父类引用调用子类重写的方法,指向的是重写方法;
四、抽象类:
使用abstract关键字修饰的类,即为抽象类;
抽象类中可以声明普通类的所有成员之外,还可以声明抽象方法;
含有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法;
抽象类不能被实例化对象,只能被继承,使用多态的方式获取对象;
也可以使用匿名内部类的方式创建对象;
如果一个类继承了抽象类,必须要重写抽象类中的所有抽象方法;
抽象方法中可以声明构造方法;
五、接口:
使用interface关键字修饰;
接口是可以多继承的;
接口可以被类实现,一个类可以实现多个接口;
接口是一个完全抽象的抽象类,接口中的方法都是抽象方法(JDK1.7↓);
接口中不能有构造方法;
接口中不能声明变量,只能声明常量,默认的声明格式为:public static final int i = 1;
接口的声明和接口中方法的声明默认都使用了abstract关键字;