JAVA的面向对象

一、封装
1、概念:
将东西包在一起,然后以新的完整形式呈现出来,将方法和字段一起包装到一个单元中,单元以类的形式实现。(类似于C语言的结构体)
信息隐藏,隐藏对象的实现细节,不让外部直接访问到,将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符),共同被称作封装,其结果是一个同时带有特征和行为的数据类型。
“定义类,定义其属性、方法的过程称为封装类”。
信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因。
信息隐藏的原因包括:
①对模块的任何实现细节所作的更改不会影响使用该模块的代码
②防止用户意外修改数据
③使模块易于维护和使用(就是电脑配件)

访问修饰符:
在这里插入图片描述
属性封装的实现:
修改属性的可见性来限制对属性的访问。
为每个属性创建一对赋值方法(setter)和赋值(getter)方法,用于公开对这些属性的访问接口在setter和getter方法中,根据需要加入对属性的限制。

方法封装的目的:
隐藏方法实现细节(方法体),向外部提供公开接口(方法头),以供安全调用简化调用,方便修改维护,根据需要,可以私有化方法,以供内部使用——帮助方法helper。

2、UML类图:
Unified Modeling Language(UML)又称统一建模语言或标准建模语言。类的命名尽量应用领域中的术语,应明确、无歧义,以利于相互交流和理解。类的属性、操作中的可见性使用+、#、-,分别表示public、protected、private。
在这里插入图片描述
3、构造方法:
Java系统保证每个类都有构造方法。
类的构造方法的概念和作用:
①构造方法负责对象初始化工作,为对象的属性赋合适的初始值。
②创建对象时,其类的构造方法确保在用户操作对象之前,系统保证初始化的进行。
构造方法的语法规则:
①构造方法名与类名一致。
②没有返回类型。
③方式实现主要为字段赋初值。
构造方法的调用:
构造方法的调用很特别:new操作符(实例化对象的时候,自动被调用)。

4、this关键字的特点:
①在类的方法中,使用this关键字代表的是调用此方法的对象的引用。
②this可以看做是一个变量,它的值是当前对象的引用。
③使用this可以处理方法中的成员变量和形参同名的问题。
④当在方法内需要用到调用到该方法的对象时,就可以用this。
⑤在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法。(只能放第一句)

5、static关键字的特点:
①用来修饰类的成员—修饰成员变量的称为类变量(静态变量)。
②修饰成员方法称之为类方法(静态方法)。
③当类被加载的时候就会被加载,优先于对象的存在。
④用来修饰语句块—称之为静态代码块,先于构造方法之前执行,只会执行一次,用来对静态成员做初始化。
⑤调用的时候可以直接通过类名。成员来进行访问。

static关键字的注意事项:
①静态方法中只能访问外部的静态成员
②静态方法中不能出现this关键字

6、方法重载:
多数程序设计语言要求每个方法(函数)提供一个独一无二的方法名,不存在方法重载的概念。
在java中,规定方法签名是解析方法的规则而不是方法名,为方法重载开创了条件。
方法重载使得在一个类中,方法名相同而参数列表不同的方法可同时存在,代表相似的行为或功能。
重载overload概念:同一个类中,同名不同参的方法称为重载方法。
注意:仅有返回值不同的方法不能称为重载。

7、包:
打包的意义:
①标准java库是由一系列包组成,包括java.lang、java.util、java.net等等。
②标准java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包
③java的包是为了更好地规划代码,防止命名冲突和混乱。所以java出现了打包机制。
④当把类组织起来放进一个包内之时,也就给包中的成员赋予了相互访问的权限,我们就拥有了该包内的程序代码。
⑤包访问权限把类聚集在一个包中这一做法提供了意义和理由。

一个类可以使用同一个包中的所有类。
一个类可以使用其它包中的所有公开类。
怎么使用其它包中的公开类:
①在每个类签名加上完整包名,例如:
java.util.Data today = new java.util.Data();
②更简洁通用的方法:使用import语句来导包(eclipse ctrl+shift+o)
import java.util.Data;
……
Data today = new Data();
③可以import特定类,也可以导入整个包。通过在源代码文件的顶部(在打包语句后)使用import语句来实现import java.util.*

二、继承
1、继承的概念和实现:
继承需要符合的关系:is-a;父类更通用更抽象,子类更特殊更具体。
①继承背后的思想就是基于已存在的类来构建新类。
②当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对要求。
③约定:从其他类导出的类叫做子类,被导出的类叫做父类。
④在java中,除了Object类以外,所有类都是子类,都只有唯一的父类。
⑤继承在OOP中不可或缺。
⑥创建一个类时,总是在继承。
⑦继承的意义:代码重用,体现不同抽象层次。
在java语言中,用extends关键字来表示一个类继承了另外一个类。

2、super关键字:
①super和this关键字的特点类似:super代表的是父类对象的引用。
②当子父类的成员出现同时,可以通过super来区分。
③子类的构造方法中,通过super关键字调用父类的构造方法。
强调:当构造一个子类对象的时候一定会先调用父类的构造方法来构造父类的对象。调用父类构造方法语句必须是子类构造方法中的第一条指令。

3、方法重写-Override:
方法重写是指子类可以根据需要从父类继承来的方法进行改写,是多态机制的前奏。
方法重写的注意点:
①重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值。
②重写方法不能比被重写方法有更严格的访问权限。
③父类中的私有方法,不能被重写。
④在子类重写的方法中继续调用父类被重写的方法可以通过super.函数名获取。

4、Object类常见方法:
①java中,所有类都直接或间接继承自java.lang.Object类,可以说Object是java中所有类的祖先即根类。
②java中任何类都继承了Object类中的方法,主要有toString()、equals()、hascode()、clone()、getClass()、finalize()。(前两个可以根据实际需求对其进行重写)

5、抽象类概念和作用:
①抽象类:Java中可以定义没有方法体的方法,该方法由子类来具体实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。
②抽象方法的特点:
a.只有方法头没有方法体的方法称为抽象方法
b.抽象方法用abstract来修饰
c.抽象方法代表一种不确定的操作或行为
d.抽象方法不能被调用
③抽象类的特点:
a.定义中含有抽象方法的类叫做抽象类
b.抽象类用abstract来修饰
c.抽象类代表一种抽象的对象类型
d.抽象类不能实例化
e.抽象类中可以有具体方法,可以没有抽象方法
④模板方法模式
a.定义:一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为。
b.意图:定义了一个操作中的一个算法框架,把一些步骤推迟到子类去实现。
模板方法模式让子类不需要改变算法结构。
在这里插入图片描述
6、接口概念和作用:
①接口语法
interface 接口名{
//公有静态常亮、抽象方法
}
②接口的特点
a.接口中只能存放静态常量和抽象方法
b.java接口是对功能的拓展
c.通过实现接口,java类可以实现多实现
d.一个类可以同时继承(extends)一个父类并且实现(implements) 多个接口
e.接口与接口之间可以使用extends实现继承

7、接口抽象类的区别:
①抽象类和具体实现之间是一个继承关系,也就是如果采用抽象类的方式,则父类和子类在概念上应该是相同的 is-a。
②接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为。
③抽象类是对一组具有相同属性和行为的逻辑上有关系的事物的一种抽象,而接口则是对一组具有相同属性和行为的逻辑上不相关的事物的一种抽象。

8、内部类的概念:
所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部。内部的类称之为内部类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值