java理论之java面向对象
---恢复内容开始---
面向对象的四大特征:抽象 继承 封装 多态
一:面向对象中的类
1:类的作用 代码复用
2:类的构成---代码段 : 一个完整的大括号就是一个代码段,就代表一个独立的内存空间
---动态代码段 : 就是没有任何修饰的一对大括号
---静态代码段:用static修饰的一对大括号static{},是在加载阶段运行的代码段
---成员变量 : 保存在堆内存中,堆内存的大小是动态分配的. 它的调用对象名.成员变量名 成员变量属于关联关系---成员变量的值是另外一个类对象的应用
---静态变量 : 是属于类级别的,每个对象中的值都一样,保存在内存中的静态数据区 它的调用:类名.静态变量名
---局部变量 : 在方法中声明的变量是局部变量,并且声明的时候,就必须赋值 局部变量属于依赖关系 ---局部变量的值是另外一个类对象的应用
---常量 : 声明:public static final 数据类型 大写_ = 值 ; 在整个软件生命周期中,值不会改变
---成员方法 : 没有static修饰的方法叫成员方法 它的调用 : 通过对象名.成员方法名
---静态方法 : 用static修饰的方法 调用 : 类名.静态方法名----保存在静态代码区中
---构造方法 :用于在类实例化中,创建当前类对象的方法(实例化当前类对象); 默认是:公共的,静态的,没有返回值的,名字和类名一样的
---this对象 :1 给成员变量加前缀,然后赋值
2 用在构造方法中,重载调用本类中别的构造方法,this()重载调用的时候,必须写在构造方法的第一行
3 用于表示本类的对象,里面保存了本类的地址,this位于堆内存中第一个内存片中
4 在堆内存中,我们有堆内存中第一个内存片的内存地址作为整个对象的内存地址,并且命名为this
---super对象 : super代表的是当前子类对象中的父类型特征。
在子类的构造方法重载调用父类别的构造方法的时候,必须卸载第一行
super()和this()不能重复出现
super可以用来调用父类的成员属性和成员方法
3:类的形式---系统类,类库类,普通类和内部类
内部类分为4种 : 静态内部类
成员内部类
局部内部类
匿名内部类
4:类的继承---一个类只能从一个类继承,只有成员变量和成员方法可以被继承(局部变量在方法的内部,无所谓被继承)
---implements 可以从多个接口实现
---继承中方法的覆写Override : 1 必须是有继承关系的两个类之间
2 方法名,返回值类型,参数列表必须相同
3 重写的方法不能比原有的方法有更低的访问权限
4 重写的类不能比父类有更宽泛的异常
5 私有方法不能被覆盖重写,即使被覆写了,也会访问父类的
6 构造方法不能被重写
7 静态方法不能被重写
8 覆写是特指成员方法的覆写,和成员变量,静态变量和静态方法无关
5:类与对象之间 的6种关系 ---继承,实现,依赖(局部变量是另外一个类对象的引用),关联(成员变量是另外一个类对象的引用),聚合(类中的集合中的元素是另外一个类对象的引用),组合
6:final---final修饰的类不能被继承
final修饰的方法不能被重写
final修饰的局部变量不能二次赋值
final修饰的成员变量必须立刻赋值
final修饰的静态变量,就是常量了
6:特殊类:抽象类
接口---里面全是抽象方法的类就是接口,接口里面没有变量只有常量
常量---大写 public static final AAA;特点:在软件的生命周期不会改变
二:对象 new对象实例化的4个步骤---1 调用构造方法;2 开辟空间;3 复制;4 赋值
三:抽象类 用abstract修饰的类就是抽象类
抽象类中不一定有抽象方法,但是抽象方法一定声明在抽象类中
没有方法体的方法叫抽象方法,就是指大括号都没有的方法,需要用abstract修饰
一个非抽象类结继承一个抽象类,必须把所有的抽象方法实现
抽象类和抽象方法都不能被final,因为就是被用来继承实现的,final是不能被继承和覆写的,冲突
四:接口 接口的声明---[修饰符列表] interface 接口名 {}
接口内容 1 常量,psf,但是接口中默认就是常量,所以psf可以被省略
2 所有的方法都是抽象方法,所以abstract可以被省略
3 接口中没有构造方法,接口不能被实例化
4 接口之间可以多继承,extends
5 一个类只能继承一个类,但是可以实现多个接口
6 一个非抽象类,实现一个接口必须全部实现接口中的方法
五:多态 多态发生在赋值的时候
继承与实现---extend,implements
向上转型---父类引用指向子类对象---把子类那个对象的内存地址赋值给父类对象的那个引用变量
重写---@override
向下转型---必须现有向上转型,然后才有向下转型
多态的4种形式---成员方法多态:在方法声明的形参列表中的是父类的,调用传值的时候是子类的对象引用
---构造方法多态:构造方法声明的时候,是父类传值的时候,是子类的对象引用
---直接实例化多态:声明的时候是父类,实例化的时候是子类对象的引用的
---成员变量多态:成员变量声明为父类的,但是赋值的时候,是子类的对象引用
六:Object---toString()每个对象对自己的一个文字描述,默认是输出对象的内存地址
---hashCode()返回该对象的内存地址
---equals()默认比较引用数据类型的内存地址,需要按照你的需求进行重写
---finalize()系统清理某个对象的垃圾的时候会调用的方法
---恢复内容结束---
面向对象的四大特征:抽象 继承 封装 多态
一:面向对象中的类
1:类的作用 代码复用
2:类的构成---代码段 : 一个完整的大括号就是一个代码段,就代表一个独立的内存空间
---动态代码段 : 就是没有任何修饰的一对大括号
---静态代码段:用static修饰的一对大括号static{},是在加载阶段运行的代码段
---成员变量 : 保存在堆内存中,堆内存的大小是动态分配的. 它的调用对象名.成员变量名 成员变量属于关联关系---成员变量的值是另外一个类对象的应用
---静态变量 : 是属于类级别的,每个对象中的值都一样,保存在内存中的静态数据区 它的调用:类名.静态变量名
---局部变量 : 在方法中声明的变量是局部变量,并且声明的时候,就必须赋值 局部变量属于依赖关系 ---局部变量的值是另外一个类对象的应用
---常量 : 声明:public static final 数据类型 大写_ = 值 ; 在整个软件生命周期中,值不会改变
---成员方法 : 没有static修饰的方法叫成员方法 它的调用 : 通过对象名.成员方法名
---静态方法 : 用static修饰的方法 调用 : 类名.静态方法名----保存在静态代码区中
---构造方法 :用于在类实例化中,创建当前类对象的方法(实例化当前类对象); 默认是:公共的,静态的,没有返回值的,名字和类名一样的
---this对象 :1 给成员变量加前缀,然后赋值
2 用在构造方法中,重载调用本类中别的构造方法,this()重载调用的时候,必须写在构造方法的第一行
3 用于表示本类的对象,里面保存了本类的地址,this位于堆内存中第一个内存片中
4 在堆内存中,我们有堆内存中第一个内存片的内存地址作为整个对象的内存地址,并且命名为this
---super对象 : super代表的是当前子类对象中的父类型特征。
在子类的构造方法重载调用父类别的构造方法的时候,必须卸载第一行
super()和this()不能重复出现
super可以用来调用父类的成员属性和成员方法
3:类的形式---系统类,类库类,普通类和内部类
内部类分为4种 : 静态内部类
成员内部类
局部内部类
匿名内部类
4:类的继承---一个类只能从一个类继承,只有成员变量和成员方法可以被继承(局部变量在方法的内部,无所谓被继承)
---implements 可以从多个接口实现
---继承中方法的覆写Override : 1 必须是有继承关系的两个类之间
2 方法名,返回值类型,参数列表必须相同
3 重写的方法不能比原有的方法有更低的访问权限
4 重写的类不能比父类有更宽泛的异常
5 私有方法不能被覆盖重写,即使被覆写了,也会访问父类的
6 构造方法不能被重写
7 静态方法不能被重写
8 覆写是特指成员方法的覆写,和成员变量,静态变量和静态方法无关
5:类与对象之间 的6种关系 ---继承,实现,依赖(局部变量是另外一个类对象的引用),关联(成员变量是另外一个类对象的引用),聚合(类中的集合中的元素是另外一个类对象的引用),组合
6:final---final修饰的类不能被继承
final修饰的方法不能被重写
final修饰的局部变量不能二次赋值
final修饰的成员变量必须立刻赋值
final修饰的静态变量,就是常量了
6:特殊类:抽象类
接口---里面全是抽象方法的类就是接口,接口里面没有变量只有常量
常量---大写 public static final AAA;特点:在软件的生命周期不会改变
二:对象 new对象实例化的4个步骤---1 调用构造方法;2 开辟空间;3 复制;4 赋值
三:抽象类 用abstract修饰的类就是抽象类
抽象类中不一定有抽象方法,但是抽象方法一定声明在抽象类中
没有方法体的方法叫抽象方法,就是指大括号都没有的方法,需要用abstract修饰
一个非抽象类结继承一个抽象类,必须把所有的抽象方法实现
抽象类和抽象方法都不能被final,因为就是被用来继承实现的,final是不能被继承和覆写的,冲突
四:接口 接口的声明---[修饰符列表] interface 接口名 {}
接口内容 1 常量,psf,但是接口中默认就是常量,所以psf可以被省略
2 所有的方法都是抽象方法,所以abstract可以被省略
3 接口中没有构造方法,接口不能被实例化
4 接口之间可以多继承,extends
5 一个类只能继承一个类,但是可以实现多个接口
6 一个非抽象类,实现一个接口必须全部实现接口中的方法
五:多态 多态发生在赋值的时候
继承与实现---extend,implements
向上转型---父类引用指向子类对象---把子类那个对象的内存地址赋值给父类对象的那个引用变量
重写---@override
向下转型---必须现有向上转型,然后才有向下转型
多态的4种形式---成员方法多态:在方法声明的形参列表中的是父类的,调用传值的时候是子类的对象引用
---构造方法多态:构造方法声明的时候,是父类传值的时候,是子类的对象引用
---直接实例化多态:声明的时候是父类,实例化的时候是子类对象的引用的
---成员变量多态:成员变量声明为父类的,但是赋值的时候,是子类的对象引用
六:Object---toString()每个对象对自己的一个文字描述,默认是输出对象的内存地址
---hashCode()返回该对象的内存地址
---equals()默认比较引用数据类型的内存地址,需要按照你的需求进行重写
---finalize()系统清理某个对象的垃圾的时候会调用的方法