· 面向对象总结
本周刚刚结束了面向对象的基础学习,因为在后面会常常用到,所以在今天进行了一次总结,希望通过本次总结能够在以后面向JAVA的课程是能够轻松些吧,同时也希望本次的总结能够对各位也有所帮助吧!
面想对象主要包括类、对象、构造方法、继承、封包等等,这里不一一阐述,下文会一一进行概括!
一、类、对象、构造方法:
(一)类:是一种抽象的概念集合,是最基础的组织单位,作为对象的模板。
(二)对象:是类的实例,每个对象拥有自己独立的属性,依靠属性来区分不同对象
(三)构造方法:每个类都有构造方法若无显示类定义构造方法,java会自动提供一个默认方法一个类可以有多个构造方法。构造方法可以重载。
二、内存分析
(一)虚拟机栈
1.栈描述的是方法执行的内存模型。
2.每个方法被调用都会创建一个栈帧
3.JVM为每个线程创建一个栈,用于存放该线程执行方法的信息
4.栈属于线程私有,不能实现线程间的共享!
5.栈的存储特性是“先进后出,后进先出”栈是由系统自动分配,速度快!栈是一个连续的内存空间!
(二)堆
1.堆用于存储创建好的对象
2.JVM只有一个堆,被所有线程共享
3.堆是一个不连续的内存空间,分配灵活,速度慢!
(三)方法区
1.方法区是JAVA虚拟机规范,可以有不同的实现。
2.JVM只有一个方法区,被所有线程共享!
3.方法区实际也是堆,只是用于存储类、常量相关的信息 用来存放程序中永远是不变或唯一的内容。
三、this、static
(一)this
1.普通方法中,this总是指向调用该方法的对象
2.构造方法中,this总是指向正要初始化的对象。
3.调用重载方法是避免初始代码相同
4.this不能用于static方法中只能在构造方法中用,并且必须位于构造方法的第一句
(二)static
1.一般用“类名.类属性/方法”来调用
2.为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化
3.对于该类的所有对象来说,static成员变量只有一份。
4.被该类的所有对象共享在static方法中不可直接访问非static的成员
四、包机制
1.通常是类的第一句非注释性语句。
2.包名:域名倒着写即可,再加上模块名,便于内部管理类。
3.使用其他包的类,需要使用import导入,否则就需要书写类的完整包名和类名
五、继承 final instanceof 组合
1.子类是父类的扩展,扩展时需要extends修饰。
① 父类也称作超类、基类。子类:派生类等。
② Java中只有单继承 子类继承父类,可以得到父类的全部属性和方法(但不见得都能够使用) 如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object 。
③ 子类通过重写父类的方法,可以用自身的行为替换父类的行为。
2.final
① 被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值
② 修饰方法:该方法不可被子类重写。但是可以被重载
③ 修饰类: 修饰的类不能被继承
3.Instanceof
① Instanceof是二元运算符,左边是对象,右边是类,用来查看是否属于该类。属于为true,否则false
4.组合
① “组合”的核心就是“将父类对象作为子类的属性”,然后,“子类通过调用这个属性来获得父类的属性和方法”。
六、Object
1.toString
① 打印输出或者用字符串连接对象时,会自动调用该对象的toString()方法。
② 可以重写to String。
。
2.和equals
① 提供定义“对象内容相等”的逻辑
② “”代表比较双方是否相同 。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
3.super
① 可以通过super来访问父类中被子类覆盖的方法或属性。
② 使用super调用普通方法,语句没有位置限制,可以在子类中随便调用。
4.继承树追溯
① 查找当前类中有没有属性h,依次上溯每个父类,查看每个父类中是否有h,直到Object
② 如果没找到,则出现编译错误。上面步骤,只要找到h变量,则这个过程终止。
五、多态 转型
1.多态
多态是方法的多态,不是属性的多态
多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象
父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了
2.转型
父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。
向下转型我们时就需要进行类型的强制转换。
七、String
1.String类又称作不可变字符序列
2.String位于java.lang包中,Java程序默认导入java.lang包下的所有类
3.Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类4.String,每个用双引号括起来的字符串都是String类的一个实例
5.Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、’a’、’v’、’a’组成的
八、抽象类和接口
1.抽象
①有抽象方法的类只能定义成抽象类
②抽象类不能实例化,即不能用new来实例化抽象类
③抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用
④抽象类只能用来被继承,抽象方法必须被子类实现。
2.接口(特点)
①访问修饰符:只能是public
②接口名:和类名采用相同命名机制
③extends:接口可以多继承
④常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是
⑤方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract
⑥接口完全支持多继承。和类的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。
3.接口(方法)
①默认方法:作为替代方式,接口可以提供默认方法的实现,所有这个接口的实现类都会通过继承得到这个方法。
②静态方法直接从属于接口(接口也是类,一种特殊的类),可以通过接口名调用。
八、封装
1.特点
①提高代码的安全性
②“高内聚”:封装细节,便于修改内部代码,提高可维护性
③“低耦合”:简化外部调用,便于调用者使用,便于扩展和协作
④提高代码的复用性
2.修饰符
①private 表示私有,只有自己类能访问
②defualt表示没有修饰符修饰,只有同一个包的类能访问
③protected表示可以被同一个包的类以及其他包中的子类访问
④public表示可以被该项目的所有包中的所有类访问
面向对象总结
最新推荐文章于 2022-04-24 16:34:28 发布