什么是面向对象?
面向对象就是重点放在对象,具体操作细节隐藏,引用一些操作达到目的:
相较于面向过程方便;
面向对象更加强调运用人类日常思维逻辑中经常采用的思想方法和原则。
面向对象思路:首先考虑问题中的类和对象,其次每种类和对象应该具有的属性和方法,最后是类和类之间的关系
特性:封装、继承、多态
类和对象
类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所具有的静态和动态属性。
对象是类的具体的一个实例,对象通过**属性(attitude)和方法(method)**来分别对应事物所具有的静态(成员变量)和动态(方法)属性
定义了类才会有对象。
类和类之间的关系:
推荐:
类的类体由两部分组成:成员变量和方法
对象数组
类名 [ ] 引用名称;
引用名称 = new 类名[类元素个数]
成员变量
定义成员变量是Java自动初始化,成员变量作用范围整个类体。
成员变量在类体内方法体外。
方法
方法的定义:
- 方法的定义包括方法头和方法体
方法头由方法类型、名称以及名称后的小括号(括号内是参数列表)组成。
方法体内为执行语句。
在方法中可以声明与成员变量相同的成员变量,如果方法中再次使用成员变量,则加this.成员变量.
局部变量没有默认值
构造方法
构造方法是一类特殊方法,在构造对象时使用,构造方法没有类型且必须与类名一致。
在创建对象时如果该类中没有写入构造方法,则默认构造方法为:
类名() {}
若写入构造方法如下:
class Piont{
int x,y;
Point(int a, int b) {
this.a = a;
this.b = b;
}
}
其中构造方法为Point,当我们创建对象时,就可以写:
Point A = new Point(1,2);
实例变量和类变量
对于一个类,如果我们进行成员变量定义,数据类型前加static,那么这个变量就是类变量,没有加static的称为实例变量;
类变量是所有该类的对象共享的,实例变量则是每个对象不同。
实例方法和类方法
类方法的声明同上,加“static”,实例方法可以操作类变量和实例变量。
类方法只能操作类变量
方法重载(overload)
不同的方法可以用相同的名字,但相同名称方法必须参数列表的类型或数量不同。
构造方法也可以用方法重载
可变参数
int abab(int ...a){
...
}
方法中没有给出参数具体个数和名字
可以在循环中用
for(int i = 0; i < x.length; i++) {
x[i]...
}
//也可以用java的增强循环
for(int j : x) {
j...
}
类的关系
类的URL图
UML即“Unfied Modeling Language Diagram”,属于结构图
三个区域分别是:类名、成员变量以及方法(冒号后是数据类型)
类的关系
关联关系:
类的依赖关系:
包
- 包是java中有效管理一个类的机制。不同包中类名可以相同,同一个包中的类可以互相调用,不同包则需要引用import语句
- 包中有一个主类
具体用法:
import 包名.类名;
也可以 import 包名.*;引用该包所有类
访问权限
private(修饰私有方法和私有变量)、protected(受保护变量和方法,类似于友好变量友好方法)、public(共有方法和共有变量)
pravate修饰的私有变量和私有方法,在创建对象的时候无法通过“.”来访问私有方法和私有变量
public 就相当于公用,随便用
不写修饰符就是友好变量和友好方法