#面向对象
面向对象是一种编程思想,与之对应的是面向过程
区别:①面向过程(POP)强调的是功能 ② 面向对象(OOP)强调的是带有具体功能的对象
面向对象的优点:提高代码复用性,降低代码间的耦合度,提升代码维护性。
三大特征:封装、继承、多态
一、类
对一类事物的描述,是抽象的定义。
多实例:对象的数量不受限制
1.1.1类的使用
定义:[修饰符] class 类名{类的成员}
在一份(java)文件中,只能有一个public修饰的类,且类名必须与文件名相同。
1.1 类的成员
属性,方法, 构造器(代码块、内部类)
1.1.1 属性
类的成员变量,存储静态的数据,有默认值(同数组)。
定义:修饰符 数据类型 属性名[=初始值];
1.1.2 方法
类的行为。
形参: 在方法被调用时用于接收外部传入的数据的变量 (方法的局部变量)
参数类型:形式参数的数据类型
实参: 在方法被调用时实际传进来的数据
实参和形参数据类型必须一致
定义:
① 有参方法:修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2…){语句;return 返回值}
返回值的类型必须与返回值类型相同。
② 无参方法:修饰符 void 方法名(){语句;[return;]}
return:结束方法。后面不能有任何语句。
无返回值的方法只能调用
有返回值的方法可以调用,也可以接收返回值。
本类的方法可以互相调用。(注:main方法不能直接调普通方法,还是要申明对象才能调用,main方法被static修饰)
//public修饰的 类必须与文件名同名
//在一个文件中,只能有一个public类
//潜规则:做项目开发时,都是一个文件一个类
public class HelloWorld {
//属性的设计(类的成员之一)===成员变量
//存储静态的数据
//公式:修饰符 数据类型 变量名 [= 值];
//成员变量有默认值----》与数组默认值相同
//public 代表公共的--->谁都可以用 private 私有的--->只能自己用(类的内部使用)
//成员变量存放在堆内存中
//成员变量可以被类中的所有方法使用
//成员变量可以不用初始化,有默认值
public int age;
public String name = "tom";
public int[] score = new int[5];//成员变量
//方法的设计
//方法的动态
//公式:有返回值 修饰符 返回值类型 方法名(数据类型 参数1,数据类型 参数2.....){语句...... return 返回值} return 代表方法的结束 返回值必须与返回值类型匹配
//定义方式时的参数称为形参,使用方法时的参数叫实参
//参数是方法中的局部变量
//基本数据类型返回的时值,引用数据类型返回的是地址
public int getAge() {
System.out.println(name);
//存放在栈内存中
//只能在方法内使用
//局部变量必须初始化,否则不能使用
int a = 10;//局部变量
System.out.println(a);
System.out.println("12312");
return 10;
}
public String getName() {
System.out.println(name);
System.out.println("2222");
return name;
}
public int[] getScore() {
System.out.println("222222");
return score;
}
//无返回值方法: 修饰符 void 方法名(数据类型 参数1,数据类型 参数2.......){语句...... [return;]}
public void eat() {
System.out.println("吃");
return;
}
}
③ 可变参数:方法参数部分指定数据类型的参数是可变的
公式: 修饰符 返回值类型(void)方法名(数据类型…变量名)
//可变参数--就是数组的变种
//参数列表只能有一个可变参数的变量,而且这个可变参数必须放在列表的最后
public int add(String b,boolean c,double d,Person e,int ... a) {
int sum = 0;
for(int i = 0; i < a.length; i++) {
sum += a[i];
}
return sum;
}
④ 参数传递:java中方法的参数传递只有一种:值传递。将实参的副本传入方法中,参数本身不受影响。
⑤ 方法的重载:(同一个类中)方法名必须相同,参数列表必须不同。
1.1.3构造器
也叫构造方法,一个对象只能调用一次。
一个类中至少有一个构造器。
隐式构造器:系统默认提供无参构造器(jvm编译时自动提供)
显示构造器:一旦显示定义了构造器,系统就不再提供无参构造器,需要自己定义。
公式:①无参构造器 :权限修饰符 类名(){super();语句}
②有参构造器:权限修饰符 类名(参数类型 形参1,参数类型 形参2…){super();语句}
作用:初始化类的属性,根据需求创建不同的对象。
//构造器(构造方法)----->用来初始化(属性)
//公式:修饰符 类名(参数列表....){初始化语句.....}
//可以调用本类中的普通方法
//创建对象时,最先调用的就是构造方法
//构造方法只能调用一次
//一个类中必须有构造器,如果一个类中没有构造器,那么系统会默认添加一个无参构造器-->如果显示定义了构造器那么系统无参的就没有了
//潜规则:属性私有化、属性的set和get方法、有参无参构造器
public HelloWorld(int a) {
//属性可以直接初始化,也可以通过构造器初始化
if(a > 0 && a < 130) {
age = a;
}
name = "jack";
eat();
}
public HelloWorld(String n,int a,int[] s) {