- 面向对象 :
- 什么是面向对象:是一种思想,
- 将功能封装起来称为对象,强调具备了功能的对象,面向对象是基于面向基础的
- 一个对像的组成:基本由属性+方法组成. 即 特征 和行为
-
- 对象是具体的事物,
- 类 是对对象的抽象
- 方法 对象执行的操作
- 属性 变量—->成员变量:类内,方法外
- —–>局部变量:方法内部
-
- 类 :
- 类是模子 ,确定了对象将会拥有的特征(属性),和行为(方法);
- 类指具有相同属性和方法的一组对像的集合,
- 类是对象的类型,不同于int 类型,具有方法
*
*java定义成员变量时可以对其进行初始化,如果不对其初始化,Java会使用默认值对其初始化, - 数值 0; char \0000 ; boolean false; 所有引用类型 null
*
*java 中方法参数的传递是”值传递”;;;;
*
*
*封装:
*关键词的属性:
*public 公开的 ;整个文件,项目都具有访问权限
*private 私有 ; 只作用于当前类;
*this ; 调用当前属性,或者当前对象,就近
*super : 调用父类的构造方法 - //overload 重载 override 重写
* - 构造方法:
- 构造对象时调用的方法,用来给对象进行初始化.
- 特点:
- 1,方法名与类名相同
- 2,不用定义返回值
- 3,没有具体的返回值
*默认构造方法: - 一个类中如果没有定义过构造方法,那么该类中会有一个默认的空参构造函数.
- 如果类中定义了指定的构造方法,那么类中的默认构造函数就会消失.
- 注意:多个构造方法是以重载的形式存在的.
- 重载:方法名相同,参数类表不同(个数,数据类型,顺序).与返回值类型无关.
- 只有型参的名称不同,不能构成方法的重载
*构造方法有重载 构造方法没有重写
*普通方法有重载 普通方法有重写(重写继承父类的方法)
*
*构造函数和一般函数的区别: - 1 :构造方法:对象创建时就会调用与之对应的构造函数,对对象进行初始化
- 一般方法:对象创建后,需要方法功能时才调用
- 构造方法: 对象创建时,会调用,只调用一次
- 普通方法: 对象创建后,可以调用多次
*
*静态: static - 使用static声明的成员变量称为静态变量;
- 使用static声明的方法称为静态方法;
- 静态变量,静态方法又称为类变量,类方法
*静态变量和静态方法的调用方式 - 1类名.静态方法/静态属性
- 2对象名.静态方法/静态属性//一般不用.因为静态一般不new 对象..减少内存占用
*
*static 的特点: - 1:static 是一个修饰符,用来修饰成员变量
- 2:static修饰的成员被所有的对象共享 归属于类
- 3:static优先于对象存在,因为static的成员随着类的加载就已经存在了
- 4:static修饰的数据是共享数据,对像中存储的是特有数据.
- static的使用注意
- 1,静态方法只能访问静态类,非静态方法可以调用静态属性
- 2,静态方法只能调用静态属性,静态属性
- 3,静态方法中不可以使用this,super 关键字
- 4,主函数是静态的.
*
*成员变量和静态变量的区别
* - 1:生命周期不同:
- 成员变量随着对象的创建而存在,随着对象的回收而释放
- 静态变量随着类的加载而存在,随着类的消失而消失
- 2:调用方法不同:
- 成员变量只能被对象调用
- 静态变量可以被对象调用,也可以被类名调用
- 3:别名不同
- 成员变量别名实际变量,全局变量
- 静态变量也成为类变量
- 4:数据存储位置不同:
- 成员变量数剧存储在堆内存的对象中,所以也叫对象的特有数据
- 静态变量数据存储在方法区的静态区中,所以也叫对象的共享数据
*
*static 应该在什么情况下使用, - 1 静态变量:
- 当分析对象中具有的成员变量的值都相同时,这时这个成员就可以被静态修饰
- 只要数组在对象中是不同的,就是对象的特有数据,必须存储在对象中.是非静态的,
- 如果是相同的数据,对象不需要做修改,只需要使用即可,不需存储在对象中,要定义成静态的.
- 2 静态方法:
- 函数是否使用静态修饰,就参考一点,就是该函数是否有访问到对象的特有数据.
- 简单点来说,从源码看该功能是否要访问非静态的的成员变量,如果需要,该功能就定义成非静态的..
- 如果不需要,就可以定义成静态的.
- 但是非静态需要被功能调用,而仅创建对象调用非静态的,没有访问特有数据的方法,该对象的创建没有意义
- 只 调用,没打印,没有意义
*
*package:::包 导包import
*
*继承 extends - 继承的优点 :
- 提高了代码的复用性,
- 让类与类之间产生了关系,给多态提供了前提
-
- 什么时候使用继承:
- 当类与类之间存在所属关系的时候,使用继承.
- 在子父类中成员的特点体现:
- 1成员变量,
- 当本类的成员和局部变量同名时用this 区分,当子父类中的成员变量同名用super区分.
- this和super的用法很相似.
- this:代表本类,当前类的对象引用
- super:不能代表父类,代表一个父类空间
- 当子父类中出现成员函数一模一样的情况,会运行子类的函数,这种现象称为覆盖操作,这是函数在子父类中的特性
-
*方法重写和方法重载的区别 - 位置 方法名 参数表 返回值 访问修饰符
- 方法重写 子类 相同 相同 相同或是其子类 不能比父类更严格
- 方法重载 同类 相同 相同 无关 无关
*
*访问修饰权限 - 本类 同包 子类 其他
- private 私有 是
- friendly默认 是 是
- protected 保护 是 是 是
- public 是 是 是 是
* - 覆盖的注意事项:
- 1;子类覆盖父类方法时,子类权限必须大于或等于父类权限
- 2:静态只能覆盖静态,或被静态覆盖
- 什么时候使用覆盖:
- 当一个类进行子类的扩展时 ,子类要保留父类的功能声明,但是要定义子类中该功能的特有内容,就使用覆盖操作完成
-
- *
- absract 抽象
- 修饰的方法称为抽象方法,
- 存在抽象方法的类也必须是抽象类,用abstract修饰
- 抽象类的特点:
- 1:方法只有声明而没有实现时,该方法就是抽象方法,需要被abstract 修饰,抽象方法必须定义在抽象类中
- 这个类也要定义成抽象类.\
- 2: 抽象方法不能被实例化,(创建对象,)因为调用抽象方法没有意义
- 3:抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则这个类还是抽象类
-
- 抽象类的细节
- 1.抽象类中有构造方法吗?
- 有,用于给子类对象进行初始化
- 2,抽象类可以不定义抽象方法吗?
- 可以的.但是很少见,目的就是不让类创建对象,AWT的适配器对象就是这种类,通常这个类中
- 方法有方法体,但没有内容.
- 3,抽象关键字不可以和那些关键字共存
- private 抽象需要被覆盖,但private把方法隐藏了
- Static 静态代表共享,抽象不能
- final
- 4,抽象类和一般类的异同点:
- 相同点:抽象类和一般类都用于描述事物,都在内部定义成员
- 不同点:
- 1:一般类有足够的信息描述事物.抽象类描述的信息有可能不足
- 2:一般类中不能定义抽象方法,只能定义非抽象方法.抽象类中可以定义非抽象方法
- 3;一般类都可以实例化,抽象类不可以被实例化
- 5:抽向类一定是父类吗,:
- 是的.因为需要子类覆盖其方法后才可以对子类实例化
- *
java 面向对象
最新推荐文章于 2022-02-24 08:42:26 发布