一个源文件中可以定义多个类但只有一个类可以被public修饰,且这个类必须和源文件名一致
被public修饰的类就是主类
c语言(面向过程的语言)
面向对象(oo):将同一类功能都聚合到一个对象中,不同的对象就具有了各自的功能,我们要做某些功能开发时
只需要知道那个对象可以处理这样的事情即可。
基本概念:
1.类(class):将一组具有相同特征和行为的个体抽象出来的模板
2.对象(object):根据类创建出来的具体的实例,我们使用的都是实例。每个对象都是独一无二的
一般类中只能定义变量和方法,功能代码(循环、分支、、、)只能写在方法体中.
成员变量和成员方法只能被对象调用
new肯定是创建一个新对象,和以前的没有关系
例如:
Preson p = new Person();
p.name = "啦啦啦";
p.age = 15;
p = new Person();
由于P被重新new,成员变量会被重新初始化,以前赋的值就没有了
类是引用数据类型,对象只是引用new出来的内存空间
当重新new的时候,对象就会调用新的内存空间,和原有的内存空间就没有关系了
定义一个类
[修饰符] class 类名{
[特征]
[行为]
}
类名和变量名要求类似,只是类名需要使用大驼峰,每个单词的首字母都要大写
class Person{
一般来讲 类中只能定义特征(变量)和行为(方法)
特征:属性(成员变量,也叫对象变量)类中定义的变量,只能是对象使用
创建对象时如果我们没有给成员变量赋初始值,那么创建期间就会为这些成员变量赋默认值
数字类型默认值为0或者0,0
布尔类型:false
字符类型:对应编码为0的字符
引用数据类型:null
int age = 99;
String name;
行为: 方法 该类下所有对象都具有的功能
[修饰符] 返回值类型 方法名 ([参数列表]){
方法体(功能代码)
}
返回值类型: 就是一个数据类型,某些功能执行完后,需要有一个执行结果反馈给使用者
这个反馈就是通过返回值来实现,所以需要返回值类型;
返回值类型部份写成void
方法名:和变量名同样的要求,通过方法名来调用方法
参数列表:参数列表可以没有但是他外面的()不能省略,本质上参数列表就是一组变量的定义,
主要作用就是外界可以通过参数向方法内部传递数据。
方法只有这四种形式:
1.无参数无返回值
2.无参数有返回值
3.有参数无返回值
4.有参数有返回值
//成员方法:对象调用的方法
void run () {
System.out.println("奔跑功能");
/*
* 每个方法都是只想到return才会结束,在返回值为void的方法中可以省略return
* 因为编译时,会为该方法最后一行自动添加return
*/
return;
}
//返回值类型不为void的方法,必须通过return指定返回值
String speak() {
return "speak方法";
}
参数列表定义:数据类型 参数名, 数据类型 参数名, 数据类型 参数名,......
在方法定义期间,我们将这些定义的参数称为形式参数
实际上形式参数就是一组局部变量;局部变量就是定义在方法中的变量,出了方法花括号无法使用该变量
只有我们确定执行该方法需要外接传递数据进来,才需要定义形参.外界可以通过形参将数据传输进来
形参可以是0个、1个、多个彼此间用逗号隔开
void add (int a, int b) {
System.out.println(a + b);
}
String eat(String food) {
System.out.println("提供的食物为:"+ food);
return food + "真好吃!";
}
如何创建对象(实例化)
类名(类型) 对象名(变量名) = new 类名 ();
new向堆区内存申请内存空,用来存放我们的对象
Person person = new Person();
System.out.println(person);
//通过对象调用成员变量 对象名.属性名
System.out.println(person.age);
System.out.println(person.name);
//修改成员变量的值 对象名.属性名 = 新值;
person.name = "弗雷尔卓德" ;
System.out.println(person.name);
无参无返回值的方法的调用 对象名.方法名();
调用了方法之后,立马去执行方法体中的所有代码
有返回值的方法,该方法执行完毕后,整体的表达就是return指定的返回值
有参数的方法的调用
对象名.方法名(实参列表)
实参就是实际参数,就是调用方法时,方法体中真正要用到的值
1.将对应位置的实参赋值给形参
2.执行方法体中的代码
例如我们add方法,将1赋值给a,将2赋值给b,然后执行方法体中的代码
person.add(1, 2);