Java对象的三大特性(封装、继承、多态)

类(类型)和对象:对象是独一无二的。对象有其所属之类型。对象是类型的一个具体的实例。

创建编写一个 class :定义一个类型。类型是编写出来的,即使程序不运行,类型已然存在。

对象:对象是new出来的,在程序运行期间new出来的,存在于内存中(堆中 )。如果程序未运行,则对象不存在。

对象的三大特性:

1.封装:

1.1 把本属于某个类型的成员属性(静态特性)和职责(动态特性)定义到一个类中。

1.2 访问权限控制:使用权限访问修饰符控制成员(属性和方法)的访问(可见性)。

private:最小访问权限,仅限类的内部可以访问。

<无修饰符>:包修饰符,友好访问修饰符,类内,包内可以访问。

protected:类内,包内,子类可以访问。

public:类内,包内,子类,包外都可以访问。

类的两大成员:

1.属性:有默认值,0 0.0 false '\0' null。引用类型的默认值是null值。

2.方法:方法中,可以访问成员属性。

构造方法:

用于构造对象(对对象进行成员属性初始化),构造对象的过程可能简单,也可能复杂。

  1. 和类同名。语法:new 构造方法(参数列表)

  2. 无返回值。其作用仅为构造对象。

  3. 构造方法可以重载。

this关键字:

  1. 访问当前对象的属性和方法。

  2. this(参数列表),只能放在构造方法的第一行,并且只能单独使用。

  3. 当方法的参数和成员属性名称冲突的时候,可以使用this进行区分。

2.继承:

2.1 为什么要继承:消除重复。子类可以继承父类的某些成员。

2.2 extends 关键字:扩展。一个类只能继承一个父类。如果没有指定父类的话,则默认继承自Object类。

Object类是根类型,终级类,没有父类。其它一切引用类型都是直接或间接继承自Object类型。

2.3 什么成员可以被继承?1. 私有成员不能被继承。2. 构造方法不能被继承。

2.4 子类对象构造的过程:按照继承的顺序,递归创建各类型的状态值。

3.多态:

同一个类型所展现出的行为或属性的多种形态。

使用父类(祖先类、接口)的引用指向子类(派生类,实现类)的对象。

多态的使用场景:某些场景,只希望关注某些(不同的具体类型)类型的共性(祖先类,接口),而忽略其它独特的特性。

final:

  1. 修饰类,表示类不可被继承。

  2. 修饰方法,表示方法不能被重写。

  3. 修饰成员属性,或者普通变量,表示值不可修改。

static:静态的。

一旦属性和方法,添加了static关键字,表示属性和方法是属于类的,而不是属于某一个具体的对象的。

通过“类名.静态成员”来访问,而无须先创建对象。

抽象类:

  1. 当定义一个类时,如果某个方法暂时不便实现,或者无法实现,或者不适合实现,或者希望具体的子类来提供实现,可以使用abstract关键字来修饰此方法,表示抽象方法,抽象方法无需提供实现。

  2. 当一个类中存在抽象方法时,类必须定义成抽象类。但是,一个抽象类中可以没有抽象方法。

  3. 抽象类不能实例化,但可以定义构造方法。

  4. 抽象类是类,拥有一切类的特性,除了不能实例化。

接口:

  1. 接口不是类。但是接口和抽象类类似。

  2. 接口中的方法全都是公有的抽象方法。jdk8之前。

  3. 接口中的属性,都是公有的静态的最终的。

  4. 接口需要类来提供实现。implements关键字。一个类可以实现多个接口,相当于将所有这些接口的方法提供实现。

  5. 接口可以继承接口,使用 extends 关键字。

  6. 接口也可以使用多态特性,使用接口的引用指向实现类的实例。

  7. 接口的主要目的(作用)就是多态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值