[JavaSE]面向对象三大特性的理解和总结

封装

使用关键字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(...);

前提条件

通过继承、重写父类的方法的操作,并且有父类引用指向子类对象,才能够有多态的实现。

利弊

  • 优点
    由于在运行程序时才通过动态绑定确定哪个对象调用哪个方法,所以极大地提高了程序的灵活性。
  • 缺点
    如果父类类型的对象不向下转型为子类类型,则无法调用子类特有的方法。

注意

不能将超类的引用赋予子类的变量。

以上是面向对象学习过程中的一个阶段性的总结,省去了一些内容,只提取了个人认为比较重要的理解性的内容,如有不足之处望大家提提意见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值