Java面向对象进阶(一)

分类思想

分类思想:分工协作,专人干专事

分包思想

包:本质上就是文件夹

创建包:单级包、多级包,多级包之间使用“.”进行分割,多级包的定义规范:个人域名或公司网站地址翻转(去掉www)

包的命名规则:字母都是小写

包的定义

使用package关键字定义包

格式:package包名;如果是多级包,中间用"."进行分割

package com.itheima;

注意:一般情况下,我们不会手动的去给某一个类定义包,使用IDEA开发工具创建即可

包的注意事项

package语句必须是程序的第一条可执行的代码

package语句在一个java文件中只能有一个

如果没有package,默认表示无包名

类与类之间的访问

同一个包下的访问

不需要导包,直接使用即可

不同包下的访问

1、import导包后访问

2、通过全类名(包名+类名)访问

应用场景:多个包下,出现了相同的类名称,就可以使用这种访问进行区分

注意:import、package、class三个关键字的摆放位置存在顺序关系

package必须是程序的第一条可执行的代码

import需要写在package下面

class需要在import下面

static 关键字

static 关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法,成员变量

被static修饰的成员变量,一般叫做静态变量

被static修饰的成员方法,一般叫做静态方法

static修饰的特点

1、被static 修饰的成员,会被该类的所有对象所[共享]

2、被static修饰的成员,会随着类的加载而加载,优先于对象存在

3、多了一种调用方式,可以通过 [类名 . ] 进行调用

注意事项:

1、静态方法只能访问静态的成员

2、非静态方法可以访问静态的成员,也可以访问非静态的成员

3、静态方法中是没有this关键字

继承

继承:让类与类之间产生关系(子父类关系),子类可以直接使用父类中非私有的成员

继承的格式:

格式:public class 子类名 extends 父类名{}

范例:public class Zi extends Fu{}

Fu:是父类,也被称为基类、超类

Zi:是子类,也被称为派生类

继承的好处和比弊端

继承的好处:

提高了代码的复用性

提高了代码的维护性

让类与类之间产生了关系,是多态的前提

继承的弊端:

继承是侵入性的

降低了代码的灵活性

继承关系,导致子类必须拥有父类非私有属性和方法,让子类自由的世界中多了些约束

增强了代码的耦合性

代码与代码之间存在关联都可以将其称之为 “耦合”。

耦合性:代码与代码之间存在关联都可以将其称之为“耦合”

继承的特点

java只支持单继承,不支持多继承,但支持多层继承

单继承:子类只能继承一个父类

不支持多继承:子类不能同时继承多个父类

多层继承:子类A继承父类B,父类B可以继承父类C

继承的成员变量访问特点

super 关键字的用法和this关键字的用法相似

this:代表本类对象的引用

super:代表父类存储空间的标识(可以理解为父类对象引用)

关键字访问成员变量访问成员方法访问构造方法
thisthis.成员变量 访问本类成员变量this.成员方法(...)访问本类成员方法this(...)访问本类构造方法
supersuper.成员变量 访问父类成员变量super.成员方法(...) 访问父类成员方法super(...) 访问父类构造方法

继承的成员方法访问特点

通过子类对象访问一个方法

子类成员范围找

父类成员范围找

方法重写

方法重写概述

在继承体系中,子类出现了和父类中一模一样的方法声明

方法重写的应用场景

当子类需要父类的功能,而功能主体子类有自己特有内容,可以重写父类中的方法,这样,既沿袭了父类的功能,又定义了子类特有的内容

方法重写注意事项

父类中私有方法不能被重写

父类静态方法,子类必须通过静态方法进行重写,父类非静态方法,子类也必须通过非静态方法进行重写

注意:静态方法不能被重写!如果子类中,也存在一个方法声明一模一样的方法,可以理解为,子类将父类中同名的方法,隐藏了起来,并非是方法重写!™

子类重写父类方法时,访问权限必须大于等于父类

权限修饰符

修饰符同一个类中同一个包中子类无关类不同包的子类不同包的无关类
private
默认
protected
public

继承中构造方法的访问特点

子类中所有的构造方法默认都会访问父类中无参的构造方法

子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。

子类初始化之前,一定要先完成父类初始化

构造方法的第一条语句默认都是:super();

注意:如果我们编写的类,没有手动指定父类,系统也会自动继承Object(java继承体系中的最顶层父类)

如果父类中没有空参构造方法,只有带参构造方法

子类通过super,手动调用父类的带参的构造ff

子类通过this去调用本类的其他构造方法,本类其他构造方法再通过super去手动调用父类的带参的构造方法

只注意:this(...)super(...)必须放在构造方法的第一条有效语句,并且二者不能共存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值