OOP⑵

时间:2023-12-29 09:01:02
1.问题?
怎么创建对象?

类名 对象名=new 类名();
在java中只要是看到了()! 这就是方法! 2.构造方法: 创建某个对象的方法! Student stu=new Student(); Student() ==>构造方法 我们并没有在Student类中创建这个构造方法! 为什么我们还能创建对象呢??

因为 系统默认会给我们创建一个本类的 无参构造方法!
如果我们 创建了本类的构造方法! 系统将不再创建!
public class Student{
int age;
Stirng name; //系统默认创建的无参构造方法
public Student(){
} } ****只有我们的构造方法才能创建出类的实例(对象)! ****没有构造方法,我们就无法通过类 来创建对象! ()中没有值,就是无参! (String name,int age)中有值,就是有参或者带参! 3.创建构造方法的语法: 访问权限修饰符 类名(){
}
方法的定义: 行为! 方法在java中怎么定义?语法?
访问修饰符 返回值类型 方法名(形参){
方法体
public void showInfo(){ } 所有的方法,只要是没有返回值 返回值类型 必须写成 void (构造方法除外)
4.参数列表:
01.参数个数
02.参数类型
03.参数的顺序

5.参数传递:
01.值传递 传递的是对象的值
基本数据类型+String类型 作为参数的时候 都是使用的值传递 02.引用传递 传递的对象的内存地址
除了String类型之外的所有引用数据类型 在 作为参数的时候 都是使用的引用传递
**值传递 public static void main(String[] args) {
int num1 = 5;
changeNum(num1);
System.out.println(num1);
} private static void changeNum(int num2) {
num2 = 50;
} /**
* @param name 用户传递过来的姓名
*/
public void changeName(String name) {
name = "小黑";
} public static void main(String[] args) {
// 实例化Student对象
Student stu = new Student();
// 定义一个姓名
String name = "小白";
stu.changeName(name);
System.out.println(name); // 小白
} **引用传递 public class Student { String name; // 姓名
int age; // 年龄 public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "老公";
stu1.age = 50; Student stu2 = stu1;
/**
* 把stu1的内存地址 给 stu2
* 问题1:
* 我们有没有显式给stu2对象的name属性赋值?? 没赋值!!
* 我们有没有显式给stu2对象的age属性赋值?? 没赋值!!
* 问题2:
* 我们改变stu1或者stu2中的任何一个对象!
* 那么另一个对象 也随之改变!
* 因为stu1和stu2共享堆中的区域!
*/
System.out.println(stu2.name);
System.out.println(stu2.age); }
}

public class Student {

	String name; // 姓名

	public void changeName(Student stu2) {
stu2.name = "小黑";
} public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "小白";
stu1.changeName(stu1); //Student stu2 =stu1;
System.out.println(stu1.name); } } public static void main(String[] args) {
String[] names1 = { "小黑", "小白", "小红" };
System.out.println(names1[0]); // 小黑
changeNames(names1); // String[] names2=names1;
System.out.println(names1[0]); // 小黑黑 } private static void changeNames(String[] names2) {
names2[0] = "小黑黑";
}