javaOOP
2024-05-10 16:17:26 4 举报
AI智能生成
Java是一种面向对象的编程语言,它使用面向对象的编程概念,如类、对象、继承、封装、多态和抽象,使开发人员能够创建可重用的代码。在Java中,类是一个模板,用于定义对象的属性和方法。对象是类的实例,拥有自己的属性和方法。继承允许一个类继承另一个类的属性和方法,从而实现代码重用。封装是一种将数据和方法绑定在一个单元中的机制,以保护数据免受未经授权的访问。多态性是指一个对象可以有多个形式,具体取决于使用的上下文。抽象是一种将复杂系统分解为较小、可管理的部分的方法。Java还提供了许多内置类,如String、ArrayList、HashMap等,这些类可以轻松处理常见的编程任务。
作者其他创作
大纲/内容
定义:客观存在事物,万事万物皆为对象
对象有特征(属性)和行为(方法
对象
成员访问方式:对象名。成员名
定义:类就是从具备相同属性和方法的多个对象中抽象出来的
类
类是一个抽象的概念
对象是一个你能看得到,摸得着的具体实体
类和对象有什么区别呢?
定义:将属性和实现细节隐藏,提供可访问的接口
封装
继承
多样性
面向对象编程的三个重要的原则
1个文件中可以有多个类,但是公共类只有一个,且与文件名同名
编译是以类为单位,一个类中有多少个类,编译生成多少个class文件
class(类)——说明
class类名{ ——属性;——方法; {
属性——在类中声明的变量,都有初始值
定义类
类与对象
定义方法语法——public 返回值类型 方法名(){ / /这里编写方法的主体 }
非void(有返回值)方法体中必须有return <表达式>语句,且<表达式> *类型中要与方法的<返回值类型>要一致;
说明:方法只有一个返回值
void(返回值)为空:方法中最后默认teturn语句
方法的返回值类型
方法:对象名。方法名
调用过程:方法在调用时,程序流程进入到方法体,当执行return时,返回调用处
方法的调用
方法
方法1
根据变量的作用域分为:全局变量(成员变量)和局部变量
局部变量的优先级高于全局变量
{}决定变量的作用域
变量的作用域: {}决定变量的作用域
定义:隐藏对象的属性和实现细节,仅对外公开接口(类的成员)来和对象进行交互.
封装基本单元:类
功能:代码重用
怎样封装————alt+shift+get/set
私有化属性
公开读写方法 get拿到 set设置值
封装两部曲
String类型的全局变量的初始值为null
特点——方法名与类名相同;没有返回值
调用——在实例化时
任何类都有一个隐式默认不带参的构造方法;
写了构造方法,就无默认不带参的构造方法;不需要定义返回值类型也不需要void,下对象实列化的时候自动调用的不能手动去带点
子主题
说明——
通过setXX方法
通过构造方法
给属性赋值
构造方法
功能——代表当前对象
使用——this.成员名调用属性和方法
功能——解决局部变量和全局变量同名时,如果要访问全局变量在前面加this
this是一个当前对象的地址(引用) this.属性 this.方法 this() 调用自己本类的构造
this
形参——定义方法中声明的变量
实参——调用方法中的参数
参数分为
方法调用时,实参要与形参一一对应;实参与形参的类型、数量、顺序一一对应
参数
成员变量声明时初始化
通过构造方法给成员变量赋值
通过对象名,属性名给成员变量赋值
给成员变量赋值方法
方法2
定义——将水属性和实现细节隐藏,提供外界可访问接口
封装的基本单位是类
默认返回的类的全路径和对象在内存中的地址
输出一个对象时会自动调用toString方法
toString方法
值类型:8种基本数据类型; 枚举 引用类型: 数组、类、接口
值类型变量中保存的是“值” 引用类型变量中保存的是“地址”
赋值后 值类型变量无关系 引用类型变量有关系
数据类型(值类型和引用类型)
String类型——特点——不可更改
对象数组
定义包——package.包名1.包名2;
必须位于程序第一行
包名要与文件夹一一对应
包名小写
说明
命名机制和安全机制
命名机制:在同一个包中的类名不能相同
功能
对象数组——班级类
包
方法名与类名相同
无返回值类型
特点
什么时候调用——实列化时
功能——初始化
定义:没有返回值类型,与类名相同
任何类都有一个隐式不带参的构造方法
如果类中写了构造方法,就无隐式构造方法
子类构造方法第一句有一个隐式的super()调用父类不带参的构造方法
子类构造方法初始值过程: * 初始化父类属性 * 调用父类的构造方法 * 初始化子类属性 * 调用子类的构造方法
子类的构造方法
定义——在一个类中,如果方法名相同,但参数不同的现象,与方法的返回类型无关
减少方法的记忆量
方法重载
为什么要发封装:不封装数据不安全
怎样封装:将类的某些信息隐藏在内部,不允许外部程序直接访问而时通过该类提供的方法来实现对隐藏信息的操作和访问
面对对象的三大特征:(抽象)、封装、继承、多态
封装的基本单位——类
定义——代表当前对象
this.属性名:调用属性
this.方法名调用方法
this():调用构造方法,如果使用,必须是构造方法中的第一条语句
使用
在什么情况下使用:局部变量与全局变量同名时,调用全局变量
重载&构造
1)在本类中:静态方法只能调用静态成员
2)在不同类中: 静态成员访问方式: 1)对象名.成员名(不推荐) 2)类名.成员名
修饰方法
1)静态属性是所有实例共享
2)静态属性生命周期为整个应用程序
修饰属性
静态块在整个应用程序中被执行一次 //在声明一个类时,就会加载Clazz.class文件 类文件加载在整个应用程序中也只会被加载一次 非静态块在实例化之前被执行
应用:初始化
静态块和非静态块
普通的类是多列模式
将结构方法私有化
声明一个静态本类的·对象
提供公共静态的方法,获取本类实列
单例模式 (设计模式)
static(静态的)
如果两个类存在is(是)的关系那么就两个类就允许存在继承关系父类和子类:父类中放的是共有的特征或者行为。子类中放的是独有的特征或者行为
父类中公开的方法或者属性子类都可以无条件拿到(继承到)
单继承,每个类只有一个父类
说明:
私有成员
不能被继承的成员:
少写一些共有的代码
提供另外一种形式的分类
代码重用
继承的好处
父类(parentClass)也叫超类(superClass)也叫基类(baseClass)
子类(subClass)也叫派生类(deriveClass)
父类和子类
语法:子类 extends 父类
子类可以直接拿到父类的公有的但是父类不能拿子类的,继承的单方向一个类只允许有一个父类继承也是单继承
super.属性可以显示调用父类属性super.方法可以显示调用父类方法但是请切记!!super不是父类的地址(引用)它仅仅是一个关键字super()表示调用父类的构造它也只能放在构造方法的第一行
super
this是一个当前对象的地址(引用)this.属性this.方法()this()调用自己本类的构造
对于继承关系的构造方法一定是先调用父类的再调用子类的
注意
private 私有的 friendly 默认的(友好的)protected 受保护的(父子类)public 公开的
子类(派生类) extends 父类 (基类 超类)
使用setXX方法给属性赋值
使用构造方法给属性赋值
赋值
在类中使用,类不会被其他类继承
在属性中使用,属性不会被修改
注意:final修饰的变量称为:符号常量
在方法中使用,方法不会被重写
final
定义——abstract
特点——不能被实列化
abstract:抽象类
抽象体没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被返现,除非子类是抽象类
abstract:抽象方法
子类用过重写父类的方法,可以用自身的行为替换父类的行为,方法的重写是实现多态的必要条件
定义:子类存在与父类相同的方法现象
1.“==”:方法名、形参列表相同
2.“
重写·
重写&&抽象
多态定义:同一个引用类型,使用不同的实列而之呈现不同操作
编写父类
编写子类,子类重写父类方法
运行时,使用父类的类型,子类的对象
实现多态的步骤:
再继承关系的子类中
重写的方法名,参数,返回值类型必须与父类相同
私有方法不能继承因而无法重写
方法重写的规则:
方法重写
使用父类类型
实现多态的两个要素
优点:可扩展,可维护
里氏替换原则:子类替换父类
final&多态
1.定义接口:interface
2)接口中的变量都是公共的静态的最终常量 可访问性默认也只能是public
3)接口不能被实列化
4)一个类可以实现多个接口
特点:
接口变量为什么不能修改:因为接口中的所有变量是符号常量,所以不能被修改
接口是一种规范
Arrays.sort排序
接口表示的其实是一种能力
对象是对现实世界物体的抽象
类是对对象的抽象
接口是对类的抽象
接口是什么
抽象类是类所以只能单继承,而接口(interface)可以多实现
抽象类继承用extends,而接口用implements
抽象类可以有构造,接口不能
抽象类可以有一般的属性,接口中的属性只能是静态常量
抽象类中可以有抽象方法,也可以有一般的方法,而接口中只能有抽象方法
抽象类中抽象方法可以被除private以外的修饰符修饰,但是接口中只能是public
接口与抽象类的区别:
常量一定是全大写
接口
异常定义:程序运行过程中可能发生的错误;
后果:可能导致应用中止
if
try块:监控可能发生异常的代码
1)捕获异常:声明类型是抛出异常对象类型或它的父类类型 Exception是所有异常类的父类
2)处理异常:printStsckTrace()是异常中的打印异常信息
catch块:捕获异常、处理异常
try catch
处理异常两种方式
如果发生异常,系统会抛出异常对象,catch块中声明异常类的类型 如果异常类的类型抛出异常对象的类型或它父类类型,
如果发生异常,try块中后面的代码不会执行,直接跳到catch块
如果发生异常会怎么样?
除数为0抛出:ArithmeticException
数组下标越界:ArrayIndexOutOfBoundsException
对象为空时,调用方法:NullPointerException
如果指定的类不存在:ClassNotFoundEcception
常见的异常类型:
Error异常:属于jdk或系统异常
Exception:是程序抛出的异常
Exception:分为RuntimeException(运行时异常)和(非运行时异常)RuntimeException
异常基类:Throwable类,它有Error和Exception子类
finally块:特点:无论是否有异常,都会被执行;应用与释放资源
try可以只和finally块组合;但没有处理异常,所以异常还是会抛出
try-catch-finally块
try{//监视 有可能出现问题的代码}catch(异常的类型 异常信息所封装成的对象){ 处理异常的代码}finally{ 最后会被执行的代码(有无异常都会被执行)}
语法
自定义异常 throws
抛出异常throw
异常
javaOOP
0 条评论
回复 删除
下一页