Java基础_面向对象


面向对象
面向对象编程是一种编程范式或编程风格,以类或对象作为组织代码的基本单元。

一、四大特性

1、抽象

通过抽象,即从具体的实例中抽取共同的性质形成一般的概念。具体的概念包括方法、对象和类等。

2、封装

信息隐藏、数据访问保护。Java通过4种访问控制权限符来实现封装。

关键字最大访问范围备注
private类本身访问开发中经常将成员变量设置private,通过getter、setter方法进行访问
default同一个包下的所有类-
protected不同包下的子类-
public项目中的所有类-

3、继承

is-a的关系。子类继承父类的属性和方法,同时还可以增加子类自己独有的属性和方法。

Java中,Object类是所有类的父类,其他类直接或间接地继承自Object类。

4、多态

多态指同一个操作被不同类型的对象调用时会产生不同的行为。
在Java中,多态需要子类重写父类方法。同时,创建父类引用指向子类对象。

二、类、对象

1、类

类:作为定义对象的模板可以创建对象,是抽象的。类中封装了一类对象的状态和方法。

2、对象

对象:作为事物本身存在,是具体的。对象通常作为类的实例而存在,在创建时会有自己的成员变量。

三、关键字

1、this、super

(1)this

  • 属性:主要用于解决属性重名问题。

    重名主要发生在: ① 属性名与形参名、② 属性名与局部变量名。重名时,需要访问属性,加上this.修饰。

  • 方法:一般省略不写。修饰同一个类中,方法之间的互相调用。

  • 构造器:同一个类中的构造器之间相互调用,必须放在第一行

(2)super

  在子类的方法中,可以通过使用super.属性super.方法方式,显示调用父类提供的属性和方法。通常,可以省略super.。当子类存在于父类重名的情况,就必须加上super.

  super():调用父类的空参构造器【其实平时写的构造器中第一行就是super(),一般省略不写。类似于没有含参构造器且不写空参构造器的情况,super()也是分配的】。super()必须写在第一行,所以和this()二者不能显示并存。

2、static、final、instanceof

(1)static

用关键字static修饰的称为类方法/静态方法,不用static修饰的成为实例方法。一个类中的方法可以互相调用:实例方法可以调用该类中的实例方法或类方法;类方法可以调用该类的类方法,不能调用实例方法。

(2)final

  • 使用关键字final修饰的成员变量就是常量,一般使用大写字母命名。

    常量不占用内存,即在声明常量时必须进行初始化。对象只能调用常量,不能修改它的值。

  • 使用关键字final修饰的方法,不能被子类重写

  • 使用关键字final修饰的类,不能被继承【final类不能被继承,类中方法就不能被重写,此时方法上的final就可以省略不写】

(3)instanceof

在重写equals方法时,会用来判断某个对象是否是一个类的对象。

四、类与类之间的关系

1、类与类之间产生关系的情况

a. 一个类作为另一个类中方法的形参;

b. 一个类作为另一个类的属性。

2、关系

UML图

a. 继承关系

一个类继承另外一个类的功能,同时可以增加自己新功能。

Java中通过extends标识。

b. 实现关系

一个类实现接口interface的功能。

Java中通过implements标识。

c. 依赖关系

一个类使用到另外一个类。这种使用关系具有临时性和偶然性,但被使用的类会影响到该类。

代码中,体现在一个类作为参数被某个类在自己的方法中使用。

d. 关联关系

强依赖关系。关系比依赖更强,不存在临时性和偶然性,一般是长期的,而且双方的关系一般是平等的。关联可以是单向的,也可以是双向的。

代码中,体现在一个类作为某个类的属性,或者是某类引用了一个类的类型全局变量。

e. 聚合关系

关联关系的特例,体现整体与部分的关系,has-a关系。部分与整体之间是可分离的,可以具有各自的生命周期。

代码中,与关联关系一致,只是在语义层面有区分。

f. 组合关系

关联关系的特例。体现的是contains-a的关系,这种关系比聚合更强,也称为强聚合。整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束。

代码中,与关联关系一致,只是在语义层面有区分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值