JAVA 类及类的成员:属性 方法 构造器;代码块 内部类
三大特征:封装性,继承性,多态性
关键字:this super static final abstract interface package import
-
面向对象的两个要素(类和对象)
a) 类:对一类事物的描述 抽象的,概念上的定义–类的设计就是类的成员的设计
(创建类的对象:类的实例化)
b) 对象:实际存在的个体 也成为实例(instance)
i. 调用方法:对象.属性 对象.方法
ii. 多个对象的关系:非static => 每个对象独立拥有一个属性
c) -
类的结构
a) 属性:对于类中的成员变量 —成员变量(field)
b) 方法:对应类中的成员方法 —函数(method) -
成员变量(instance variable)和局部变量(local variable)
a) 相同点:
i. 先声明,后使用
ii. 有对应的作用域
b) 不同点:
i. 位置不同: -
成员变量:直接定义在类的{}
-
局部变量:方法内,方法形参,代码块内,构造器内部。
ii. 修饰符:局部变量无法使用修饰符
iii. 默认初始化值:局部变量没有默认初始化值—>需要赋值
iv. 内存加载位置不同: -
局部变量记载在栈空间stack
-
非static属性:加载在堆空间(heap)
-
匿名对象
a) 创建对象是,没有显示赋予名字。
b) 匿名对象只会调用一次
c) 例子:mall.show(new phone());
i. 相当于把new的对象给到形参,方法调用完就出栈。 -
方法重载(overload)注意区分方法的重写(override/overwrite)
a) 同一个类中,允许多个同名的方法存在,只要参数个数和参数不同即可
b) 和权限、返回值类型都没关系!
c) printline(new char[] {a,b,c})=> 结果输出abc,没有使用Object的方法 -
可变个数的形参
a) 例子:public void showString (String … strs)
i. 可以输入多个参数
ii. 和数组冲突!! -
方法参数的值传递机制
a) 值传递:将实际参数的副本传入方法内,而参数本身不受影响
i. 形参是基本数据类型—>将实参的基本数据类型的“数据值”传递给形参
ii. 形参是引用数据类型—>将实参的引用数据类型变量“地址值”传递给形参 -
递归方法
a) 一个方法调用其本身 -
封装性
a) 隐藏对象内部的复杂性,提供对外部的接口。便于外界调用,从而提高系统的可扩展性、可维护性。
i. 例如:属性私有化:对属性进行私有化private,提供公共public的set和get的方法。
ii. 不对外暴露的方法私有化
iii. 单例模式 私有化构造器等等。。 -
Java四种权限
a) 顺序:private(类内部)、缺省(同一个包)、protected(不同包的子类)、public(同一个工程)
b) 修饰类:只能使用缺省或者public -
构造器
a) 格式:权限修饰符 类名(形参列表){}
b) 默认:和类的权限相同=>类的权限只有缺和public -
拓展:JavaBean
a) 一种可重用组件,满足:
i. 类是公共的
ii. 有一个无参数的公共的构造器
iii. 有属性,且有对应的get、set方法 -
This 的使用
a) 在方法内部使用->这个方法所属对象的引用
b) 构造器内部使用->这个构造器正在初始化的对象,相当于调用本类中的其他构造器>>只能放在首行
i. 使用this(参数列表),通过区分参数列表来使用不同的构造器
c) 可以用this来区分局部变量的属性 -
Package关键字的使用
a) 提供包的概念,方便类的管理
b) 申明在文件头
c) 包->属于标识符、遵循命名规范
d) “.”一次代表一层文件目录
e) 同一个包下不能命名同名的接口和类 -
Import关键字:导入
a) 在源文件中显示的使用import结构导入指定包内的类和接口
b) 声明在包和类之间
c) 对于Lang包和本包的类和接口,直接使用即可
d) 若不同的包使用同名的类,使用全类名:
i. 引用的时候:写全包名com.aitu.exe…Account account = new com.aitu.exe…Account ();
e) Import static:导入指定类或接口中的静态接口
i. Import static Java.Lang.Math.* -
可以直接使用 sqrt(),而不在前面输入“Math.”;
ii.