面向对象的三大特性

一、封装性

为什么要封装

在java的面向对象思维中,封装可以被认定为是一种保护屏障,防止本类中的代码和数据被外部程序随机访问。

 

封装的实现步骤

36d5c22a52f040e6a384974eac79a322.png

 注意:对封装的属性不一定要通过get/set,其他方法也可以对封装的属性进行操作。

 如何实现封装?我们可以根据上面代码。使用private关键字修饰name属性和age属性实现类的封装。

在上述代码中。使用private关键字,将属性name和age声明为私有变量,并对外界提供公有的访问方法。其中,get .Name()方法和get .age()方法,用于获取name属性和age属性的值。setName()方法和setAge()方法用于设置name属性和age属性的值。

二、继承性

继承信主要描述的是类与类之间的关系,通过继承可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。例如,”狗“继承”动物“,这里动物类是狗类的父类或者基类,狗类是动物类的子类或者派生类。如下图可以简单表示:

097d564817d24b41bc6d1f2d3a1b37fe.png

 注意:

  •  Java中的一个类只能继承一个父类,且只能继承访问权限非private属性和方法。
  • 子类可以重写父类中的方法,命名与父类中同名的属性。

目的:代码复用

继承特点:1、一个类只能继承一个父类,构造方法不能被继承。  

2、支持多层继承 

  3、父类private 的属性和方法不能继承

继承格式:

class 父类 { }

    class 子类 extends 父类 { }

super 和 this :    super.成员变量---父类   super.成员方法  ---父类

        this.成员变量---本类   this.成员方法  ---本类
     

 
 

 三、多态性

定义:

多态性是指在一个类中定义的属性和方法被其他类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同类中具有不同的语义。

优点:

 1、消除类型之间耦合关系 

 2、可扩充性 

 3、接口性 

4、灵活性

5、简化性 

6、可替换行

多态的实现方式:

方式一:重载与重写

重载:在一个类中,同一个方法名称,不同的参数类型及个数,可以完成不同功能。

重写:同一个方法名称,子类继承父类的方法,根据操作的子类不同,所完成的功能也不同。

方式二:抽象类和抽象方法

抽象方法:一个没有方法体的方法称为抽象方法。    格式:修饰符 abstract 返回值类型 方法名(参数列表){}

抽象类:abstract class 类名{}

特点:1、抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类

   2、抽象类不可以是实例化

   3、抽象类的子类,可以是抽象类,也可以是具体类。如果子类为具体类,需要重写抽象类中所有抽象方法

方式三:接口

定义:是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。

    接口无法被实例化,但是可以被实现. 一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

接口与类的区别:

   1、接口不能用于实例化对象。

   2、接口没有构造方法

   3、接口中所有的方法必须是抽象方法。

   4、接口只能被类实现,不能被类继承。

   5、接口支持多继承。

   6、接口只能含 static 和final 变量。

接口与抽象的区别:

  1、一个类只能继承一个抽象类, 而一个类可以实现多个接口。

  2、抽象类中的方法可以有方法体, 接口中的方法必须是抽象方法,无方法体。

  3、抽象类中的成员变量可以是各种类型,而接口中的成员变量只能是 public static final 类型。

  4、抽象类可以有静态代码块和静态方法,接口中不能含 静态static 修饰的方法。
 


 

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值