面向对象三大特征——封装、多态、接口
一、封装
1.封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作与访问。
2.封装的好处:
1).只能通过规定方法访问数据;
2).隐藏类的实现细节;
3).方便修改实现;
4).方便加入控制语句。
3.封装的步骤:
1).修改属性的可见性。——设为private;
2).创建爱你共有的getter/setter方法。——用于属性的读写;
3).在getter/setter方法中加入属性控制语句。——对属性值的合法性进行判断。
4.使用面向对象的思想开发程序的好处:
1).客户和软件设计开发人员之间、软件设计开发人员内部交流更加流畅;
2).提高软件设计和开发效率。
5.方法重载的原则(一个类中):
1).方法名相同;
2).参数项不同;
3).与访问修饰符和返回值无关。
6.方法重写的原则(不同的类中):
1).方法名相同;
2).参数列表相同;
3).返回值类型相同或者是其子类;
4).访问权限不能严于父类。
位置 | 方法名 | 参数表 | 返回值 | 访问修饰符 | |
方法重写 | 子类 | 相同 | 相同 | 相同或是其子类 | 不能比父类更严格 |
方法重载相同 | 同类 | 相同 | 不相同 | 无关 | 无关 |
构造方法的语法:
访问修饰符 构造方法名(此处可以指定参数){
//初始化代码
}
构造方法无返回值类型,且构造方法名与类名相同。
系统默认提供无参构造方法。当自定义构造方法后,系统不再提供无参构造方法。
二、继承
父类可以派生出多个子类,而子类只可以继承一个父亲。继承必须符合is-a原则。
1.使用继承 父类的语法:
public class 类名{
//公共的属性和方法
}
子类继承父类的语法:
访问修饰符 子类名 extends 父类名{
//子类特有的属性和方法
}
2.super关键字来访问父类的成员:
1).super只能出现在子类的方法和构造方法中;
2).super调用构造方法是,只能是第一句;
3).super不能访问父类的private成员。
3.子类不能继承的父类成员:
1).private成员;
2).子类与父类不在同包,使用默认访问权限的成员;
3).构造方法
4.抽象方法(abstract):
1).抽象方法没有方法体;
2).抽象方法必须在抽象类里;
3).抽象方法必须在子类中被实现,除非子类是抽象类。
5.抽象方法父类的语法:
public abstract class 类名 {
}
6.抽象类和抽象方法:
1).抽象类不能被实例化;
2).可以有0~多个抽象方法;
3).非抽象类必须重写父类的所有抽象方法。
7.final修饰符
1).修饰的类,不能再被继承;
2).修饰的方法,不能被子类重写;
3).修饰的变量将变成常量,只能在初始化时进行赋值。
访问修饰符总结:
访问修饰符 | 本类 | 同包 | 子类 | 其他 |
private | √ | |||
默认(friendly) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
三、多态
1.多态的概念:
多态:同一个引用类型,使用不能的实例而执行不同操作。
2.使用多态实现思路:
1).编写父类;
2).编写子类,子类重写父类方法;
3).运行时,使用父类的类型,子类的对象。
3.实现多台的两种方式:
1).使用父类作为方法形参实现多态;
2).使用父类作为方法返回值实现多态;
4.
1).向上转型——子类转换为父类,自动进行类型转换;
2).向下转型——父类转换为子类,结合instanceof运算符进行强制类型转换:
语法:
对象名 instanceof 类或接口
instanceof通常和强制类型转换结合使用。
5.多态的优势:提高代码的可扩展性和可维护性。
以上仅个人意见,如有需要补充的地方,大家及时提出,进行改正。共同学习,共同进步!