java面向对象知识点总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
j a v a面向对象知识点总
结
Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998
1 类和对象
类:
类是用来描述一类事物的共性内容的, 类是抽象的;
创建类,如何描述
属性功能
用变量来描述属性
用方法来描述功能
对象:
就是现实中具体的事物,对象是具体的;
创建对象
类名对象名 = new 类名();
如何通过对象访问类中属性和方法呢
对象名.变量名
对象名.方法名();
只要是new的对象,就是新创建的,就会在内存中开辟一段单独的空间匿名对象
创建的对象没有赋值给具体的变量;
所以给匿名对象的属性赋值是没有任何意义的;
匿名对象使用场景
1 调用方法
2 作为参数传递
3 添加进容器中
This 关键字
This. 类中的普通方法访问到的成员前边都有this.这个关键字This. 就代表当前对象,
普通方法, 创建对象调方法, 谁调用就代表谁
This(); 可以用来在构造函数中调用本类与之相对应的构造函数使用注意事项:
1 this() 只能是构造函数的第一条执行语句
2 this() 不能在构造函数之间相互调用
3 this() 不能调用自己
构造函数(方法)
构造函数的作用
用来给对象进行初始话的(初始化就是指给对象的各个属性赋值) 构造函数何时执行
对象一创建就会调用与之相对应的构造函数
构造函数语法
修饰符没有返回值类型类名(参数列表){
具体执行的代码
}
构造函数自动添加
当一个类中我们没有明确指定构造函数的话,jvm会自动帮我们添加一个空参数的构造,
如果我们指定了,就不添加了
构造函数和普通函数的区别
执行时机不同
对象一创建就会调用与之相对应的构造函数
普通函数只有被调用才会执行
return
1 就是用来在方法中返回具体结果(结果类型必须和方法的返回值类型一致)
2 即便方法的返回值类型是void,方法中也可以出现 return;
3 构造函数中也可以有return关键字
成员变量和局部变量
1 作用范围不同, 成员变量是定义在类中的,在整个类中都起作用
局部变量是定义在方法中的,在所在代码块起作用
2 初始值不同,成员变量有默认初始值,不用赋值,也能直接时候
局部变量,没有初始值,必须得赋值以后才能使用
2 封装
static
Static 是用来修饰类中成员成员变量成员方法
被static修饰的成员,就多了一种调用方式,可以被类名直接调用了
修饰成员变量
该变量在内存中只会保存一份,被类和所有对象共享, 那么一个对象对其进行修改,会影响到其他对象,为了不影响其他对象,经常会把静态变量搞成常量,被final 修饰;
修饰成员方法
静态方法中只能访问静态成员
普通方法中都能访问;
静态方法中不能出现this,super关键字
Main函数是静态的;
那么我们定义方法时,什么时候定义静态,什么时候定义非静态
当方法中使用到了普通(非静态)成员的话,就不能定义成静态的;
static代码块 (静态代码块)
用来给类进行初始话 (给类中的静态成员进行初始化)
会随着类的加载而执行(只会执行一次)
封装
就是隐藏类中的某些成员;仅对外提供公共的访问方式
封装三步走:
1 私有属性
2 提供set和get方法供外界给对象设置值和获取值
3 在方法中添加具体的存取限制
包和权限修饰符
类
权限修饰符可以用来修饰两种东西:
Public 该类在其他包中也可以访问 (首先要导包 import)
默认
类中成员
Public protected 默认 private
本类中是否能访问本包其他类其他包
Public 能能能
默认能能不能
Private 能不能不能
包
1 创建包
包的作用
1 便于管理
2 防止命名冲突;
3 包也是封装的一种方式,可以在更广的范围保护类
3 继承
某个类可以通过 extends 继承其他的类
一个类继承了另外一个类以后,就继承了所有的非私有的属性和方法
注意事项
1 java中只允许单继承; 不允许多继承, 但是允许多层继承
2 何时继承 A is B;
继承发生以后类中成员的特点
1 成员变量
当子类和父类的成员变量同名是,子类中优先使用子类自己的. 可以通过super.调用父类的成员变量和成员方法;
2 成员方法
子父类具有相同的功能,但是子类有自己具体的实现,这个时候子类是没有必要重新定义一个方法的,只需要重写父类就行了;
重写 (覆盖)
1 前提, 存在继承和实现关系
2 方法名一样,参数列表一样,返回值类型一样(jdk5以后要求子类的返回值类型是父类返回值类型的子类也行)
3 子类方法的权限不能小于父类
4 子类方法不能抛出比父类更多的异常
重载
同一个类中,方法名一样,参数列表不一样(参数数量, 参数类型),与返回值类型无关
3 构造函数
1 构造函数是不能继承的;
2 但是子类可以在构造函数中通过super()调用父类与之相对应的构造
3 如果子类构造函数首行没有明确指定this(), super(“”);这样的语句的话,其实是有一天隐式语句 super(),调用父类空参数构造,如果父类没有空参数构造的话,子类是会报错的;
4 如果子类首行有this() 这样的语句的话,就没有隐式语句super();
5 不论子类的第一行有没有this(),super(); 创建子类对象的时候一定会调用到父类的某个构造;