面向对象的三大特征:封装、继承、多态
1、封装
封装就是将客观事物封装成抽象的类,并将内部的属性和方法公开给可信的类,对不可信的类进行信息隐藏。类中属性或方法的可见性有public、default、protected和private四种,private修饰的属性或方法是本类可见,protected子类可见,default的包可见,public其他类可见。
本类 | 子类 | 包 | 其他类 | |
private | 可见 | 不可见 | 不可见 | 不可见 |
protected | 可见 | 可见 | 不可见 | 不可见 |
default | 可见 | 可见 | 可见 | 不可见 |
public | 可见 | 可见 | 可见 | 可见 |
2、继承
继承是一个类对象可以获得其他类对象的属性或方法。继承分为父类和子类,被继承的是父类,新创建的类是子类。要想一个类获得其他类的属性和方法,可通过组合实现,就是在一个类里new其他类的实例,也可通过继承实现,继承就包括实现继承和接口继承,实现继承关键字extends,子类可直接使用父类的属性和方法,接口继承关键字implements,子类实现接口,需要有实现接口内方法的能力
3、多态
多态就是类中方法根据调用对象的不同而作出不同的响应。多态有三个必要条件:继承、重写和父类引用指向子类对象
例如有一个基类接口,public interface Base { public void fun(); },有一个子类实现该接口实现fun方法class A implements Base { public void fun(){ System.out.println("A");} }
另外一个类B实现Base接口并实现fun方法class B implements Base { public void fun(){ System.out.println("B");} }
上述创建的两个类实现(继承)基类,并重写接口中的方法。在测试类中创建两个类的实例,Base a = new A(). Base b = new B(); 父类引用指向子类对象,这样a实例调用fun方法时调用的是A类中fun方法,输出A;b实例调用fun方法时调用的是B类中的fun方法,输出B。