封装
是什么
封装是指将属性数据和对属性数据的操作组合起来,形成一个不可分割的整体。其他类对属性数据的操作只能通过被授权的方法,而不能直接操作属性数据。用户无需知道具体的实现细节,只要通过接口访问即可。
为什么
封装是为了隐藏内部的实现细节,提高程序的安全性。通过封装,其他类无法直接访问本类的属性数据,这样就不会被任意的修改。用户可以访问授权的取值和赋值方法,但无法知道其内部具体的实现细节。我们可以在方法的内部加上一些自己实现的方法,如加上数据的范围限定,数据的条件判断等,这些操作都是很安全的,不会被外部知道。另外,当我们修改属性类型时,可以简单的改变一下get和set方法就可以,不需要像没封装的那样到处去修改对象的属性,提高了程序的可维护性。
怎么做
通常我们设置属性为private类型,然后设置它的getter和setter方法。我们可以在setter或getter方法中加上一些内部操作。
private String name;
public void setName(String name)
{
if(name.length()>5)
{
system.out.println("名字太长了");
}
else
{
this.name=name;
}
}
public String getName()
{
return name;
}
继承
在现实世界中,动物包括鸟类、哺乳类等,哺乳类又包括猫科动物、犬科动物等,犬科动物又包括。。。鸟类和哺乳类具有动物的基本特征,猫科动物和犬科动物具有哺乳类动物的基本特征。既然有这种规律,我们就可以提取事务的共有的基本特征或者模型形成父类,其他的事务像孩子一样继承这些特征,而且还可以有自己的个性特征。
- 子类使用extends来继承父类,使用implements来实现接口
- Java中通过父类和子类来实现这种继承关系,子类继承了某个父类,就继承了父类的所有的成员方法和成员变量,但子类不继承父类的构造器,并且不能选择性的继承父类的某些成员。
- Java采用单继承方式,即子类只能继承一个父类,多继承可以通过接口来实现。
- 子类可以修改从父类继承来的行为,称为重写。
- super关键字经常被用于一个类去引用他的父类。
class A{
}
class B extends A{
}
多态
多态是指对同一种消息,不同的类的对象有不同的反应。而且对于这个消息在编译阶段并不确定由哪个类的实例来表现,只有在程序运行期间,才确定具体的类,这样的话就可以不修改代码,就可以让实现根据运行时的需要绑定到各个具体的类的实现方法上,可以根据需要增加不同的类实现,便于程序的扩展。
实现的条件:
- 要有子父类之间的继承
- 子类要重写父类的方法
- 要向上转型,将子类的引用赋值给父类,这样父类调用与子类相同的重写的方法时,就会调用子类重写后的方法。
通过以上的方法,就可以使用父类的引用动态的绑定子类的实现,实现多态。