1.继承
子类的对象拥有父类的全部属性与方法,称作子类对父类的继承。Java中父类可以拥有多个子类,但是子类只能继承一个父类,称为单继承。继承实现了代码的复用。
Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,即命名与父类同名的成员变量。
Java中通过super来实现对父类成员的访问,super用来引用当前对象的父类。super 的使用有三种情况:
访问父类被隐藏的成员变量,如:super.variable;
调用父类中被重写的方法,如:super.Method([paramlist]),super()调用父类构造方法;
调用父类的构造函数,如:super([paramlist]);
2.封装
封装性就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。可以通过对类的成员设置一定的访问权限,实现类中成员的信息隐藏。
private:类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。
default:类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。
protected:类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
public:类中限定为public的成员,可以被所有的类访问。
3.多态
多态分为编译时多态和运行时多态。第一个通过方法重载来实现;第二个是通过方法覆盖实现,重载与重写的区别我就不介绍了,主要关注运行时多态,,也就是通过动态绑定,使用父类引用指向子类对象,再调用某一父类中的方法时,子类会表现出不同的结果,比如说先定义一个基类,以人类为对象,在在人类中定义一个方法动作—move(),在分别定义大人,小孩,老人的子类去继承这个基类,分别重写move()方法,当都以父类引用去指向不同的子类对象,再调用人类中的move()方法,呈现出的结果各不相同。
public static void main(String[]args){
Human man=new Man();
Human kid=new Kid();
Human oldman=new Oldman();
man.move();
kid.move();
oldman.move();
}
其实多态就是我们所说的面向接口编程,这个接口不一定是接口,也可以是类,多态的好处就是如果以后你要新增一个对象时,比如说你要加一个婴儿的类,不用再去修改其他代码,只要婴儿类继承我们的基类,就可以很容易扩展代码