封装
使用关键字private。
目的
不让类中的方法直接访问其他类的实例字段
作用
提高了程序的重用性和可靠性。
举例说明
public class Student{
private int sno;
public int score;
...
}
尝试擅自更改Student对象的属性:
发现:被定义为private的字段sno无法被调用及更改,而score却能够在另一个类中任意更改。此时,体现出了封装的重要性。
继承
使用关键字extends实现类与类之间的继承关系。
基本思想
可以基于已有的类创建新的类。 继承已存在的类就是复用这些类的方法,而且可以增加一些新的方法和字段,使新类能够适应新的情况。
优点与缺点
- 优点
提高了代码的复用性。 - 缺点
增加了代码之间的耦合度。
举例说明
public class Employee{
private int id;
private double salary;
...
}
public class Manager extends Employee{
private double bonus;
...
}
一个公司中有员工有经理,那么经理也是员工,但时经理在员工的基础上有他自己额外的收入,那么此时重新写一个经理类时相当麻烦的,直接继承员工类,再添加上自己特有的属性即可。(这里假设公司员工一直是员工,经理一直是经理)。
多态
在Java中,对象变量是多态的(ploymorphism)。一个父类类型的变量既可以引用自己的对象,也可以引用任何一个子类的对象。
简单来说,任何超类对象都可以用子类对象来替换。
例如
class Employee{
}
class Manager extends Employee{
}
Employee e;
e = new Employee(...);
e = new Manager(...);
前提条件
通过继承、重写父类的方法的操作,并且有父类引用指向子类对象,才能够有多态的实现。
利弊
- 优点
由于在运行程序时才通过动态绑定确定哪个对象调用哪个方法,所以极大地提高了程序的灵活性。 - 缺点
如果父类类型的对象不向下转型为子类类型,则无法调用子类特有的方法。
注意
不能将超类的引用赋予子类的变量。
以上是面向对象学习过程中的一个阶段性的总结,省去了一些内容,只提取了个人认为比较重要的理解性的内容,如有不足之处望大家提提意见。