java面向对象总结

1、面向对象的三大特性:封装 继承 多态

封装

将对象的属性和方法相结合,通过方法将对象的属性和实现细节保护起来,实现对象的属性隐藏。(封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。)

通常来说,Java修饰符就起到了封装的作用,或者比如设置XX属性的取值和赋值的方法,用于对这些属性的访问权限进行区分

继承

是子类继承父类的特征和行为,使得子类具有父类相同的行为。也就是说,继承是代码复用的一种形式,即在具有包含关系的类中,从属类继承主类的全部属性和方法,从而减少了代码冗余,提高了程序运行效率。

继承关键字:

extends :继承

implements:实现

类用于继承,接口用来实现。

多态

父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,使得同一个属性或方法在父类及其各个子类中具有不同的含义
细分:
编译时多态:静态的,主要是指方法的重载
运行时多态:动态的,通过动态绑定来实现强调文本 (多态性的体现 )

多态存在的三个必要条件:
继承
重写
父类引用指向子类对象(e.g:Parent p = new Child();)

多态的实现方式:

重写,接口,抽象类和抽象方法

二、重载、重写

重载:

同一个类中的两个或多个方法可以共享同一个名称,只要它们的参数声明不同
(同名不同参,返回类型可同可不同 e.g:构造器的重载)

重写:

子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能
(同名同参同返回类型)

子类中调用父类的被重写方法:Super 关键字

两者都是多态性的体现:

方法重载是一个类的多态性表现,
方法重写是子类与父类的一种多态性表。

三、抽象类、接口

抽象类 abstract

由abstract修饰的类叫抽象类,abstract修饰的方法叫抽象方法;
抽象的类无法进行实例化,因为他不是具体存在的类,现实生活中如描述动物:哺乳类,爬行类等就相当于抽象类
注意:抽象类里面可以有普通的方法,其他子类在继承这个抽象类时可以不继承这个普通方法,但必须实现这个抽象类的的抽象方法

抽象类的特点:

(1)抽象类不能被实例化

(2)构造方法 和 static 方法不能是抽象的

(3)父类的抽象方法往往在子类中实现

(4)抽象类可以具有指向子类对象的对象引用

附:抽象类和普通类的区别?
(1)实例化:普通类可以直接实例化;抽象类不能被实例化,因为它是存在于一种概念而非具体。
(2)继承方面:普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非子类也是抽象类。

接口 interface

接口属于百分之百的抽象类,所以接口中的方法必须全部是抽象方法,无方法体,这也就说明了接口只管规定规则,不管规则的具体实现方式

附:抽象类和接口的区别?
抽象类是对本质的抽象,接口是对动作的抽象(抽象类表示的是,这个对象是什么。 接口表示的是,这个对象能做什么)
相同点:抽象类和接口都是不能被实例化的(因为都是被用做于父类用的,一个继承,一个实现)
不同点:
1.构造方法:抽象类可以有构造方法,接口中不能有构造方法
2.成员变量:抽象类中可以有许多成员变量,接口中没有普通成员变量
3.普通方法:抽象类中包含非抽象的普通方法,接口中的所有方法必须是抽象的,不能有非抽象的普通方法
4.访问类型:抽象类中的抽象方法的访问类型可以是public、protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认的类型为public abstract类型
5.静态方法:抽象类中可以包含静态方法,接口中不能包含静态方法
6.静态成员变量:两者都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static类型(默认也是如此)
7.一个类可以实现多个接口,但只能继承一个抽象类

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值