3.1 面向对象和面向过程
- 面向对象的三大特征:
继承
封装
多态
3.2 Java语言的基本元素:类和对象
- 成员变量:这个类中的变量(默认有初始化值)
类变量:加了static关键字的变量,也叫静态变量,通过某一个对象改变类变量则该类的所有对象都会被改变
实例变量:不加static的,只是对具体的对象本身作用,不会改变其他对象的该变量(堆内存中)
- 局部变量:类中的方法内定义的变量(栈内存中)(没有默认初始化值)
形参
方法局部变量
代码块局部变量
- 方法名首个单词首字母小写,之后的每个单词首字母大写
3.3 类的成员之一:属性
- 语法格式
修饰符 类型 属性名 = 初值;
- 修饰符:用来修饰变量,指明变量是公有的还是私有的
- 修饰符private:该属性只能由该类的方法使用
- 修饰符public:该属性能被该类以外的方法使用
- 类型:任何基本数据类型,如int、boolean等
3.4 类的成员之二:方法
3.5 对象的创建和使用
- new
- 操作类的变量
- 调用类的方法
- 匿名对象:new完后直接用
new.Person().name;
3.6 再谈方法
- 方法也叫函数
- 方法可以调用方法,但不能再定义方法
- 类的访问机制
同一个类中:类方法可以直接访问类的成员变量(类中static方法不能访问非static变量,即static方法只能访问static变量)
不同类中:类A需要创建类B的对象,然后通过类对象来访问其成员
- static方法只能访问static成员的原因
1.任何程序都是在内存中执行的
2.static成员属于类本身,在类加载时就为其分配了内存
3.非static成员属于类对象,只有在对象被创建之后才会为其分配内存
- 面向对象思想“落地”法则(一)
- 关注于类的设计,即类的成员:属性,方法
- 类的实例化,即创建类对象
- 通过“对象.属性”、“对象.方法”执行
- 重载
1.相同的方法名
2. 参数不完全一样
3. 只需要看方法名和参数即可,若方法名和参数完全一样,返回值类型不一样就不算重载
- 可变个数的形参
- 形参处使用数组(String [] args),当没有参数时需定义一个空数组
- java特有(String… args),当没有参数时可以不填
3.如果一个方法有多个形参,那么一定要把可变形参(…形式)放在最后
- 方法的参数传递
- 方法只有能被调用才有意义,如果不会被调用就没有意义了
- Java里方法的参数传递的方法只有一种:值传递。基本数据类型时值存的是数,引用对象时值存的是地址
- java方法参数传递之基本数据类型:就是复制实参的值到形参上。
- 方法的参数传递之引用对象:实参中所存的对象的地址复制给形参
3.7 面向对象特征之一:封装和隐藏
- 包package和使用包内的类时用import指明
- 封装
- private,把属性“封装”在类的内部
- set和get方法
- 通过类中的方法来控制它的属性
- 如果一个不封装的话,外部类可以直接访问和改变该属性,但该属性需要被外部现实世界的条件限制不能乱赋值,所以将它封装起来。
- 权限修饰符(可见性)
- private:类内部
- 缺省:同一个类内部可以使用;同一个包可以使用
- protected:类内部;同一个包;子类
- public:类内部;同一个包;子类;任何地方(在一个Java文件中,可以有多个类,但只能有 一个public类)
3.8 类的成员之三:构造器(也叫构造方法)
- 构造方法的名称一定与类的方法一样
- 构造方法的权限修饰符与对应的类的权限修饰符一样,不需要返回值
- 默认构造方法和显示定义构造方法
- 构造器重载
3.9 几个关键字:super、this、package、import
- this
- 当前类的属性、方法
2.可以用来调用构造方法:this(),且必须放在首行,不能同时互相调用,变相的自己调用自己。
- JavaBean
- 类是公有的
- 有一个无参拿的公共构造器
- 属性一般私有,且有对应的get、set方法