本帖最后由 JXNU1999python 于 2021-12-2 11:08 编辑
<font face="微软雅黑" size=5 color=#660000 >
Java学习笔记Day15
一、今日学习:
面向对象第四节
二、学习目标与复习
1、含static的实例方法的调用
2、不含static的实例方法的调用
3、构造方法/函数
4、参数传递
三、学习内容
1、含有static(静态的)的实例方法的调用
类名.方法名(实参列表);
静态方法在同类中调用静态方法可以省略类名、以及类名后面的那个点,调用其他类中的静态方法不能省略类名。静态方法不能使用 类名.方法名(实参列表)来调用非静态方法。
2、没有static(非静态的),动态的的实例方法的调用
引用.方法名(实参列表);引用里面存储了对象的地址。
静态方法调用相同类中的非静态方法,必须采用引用的方式,引用之前必须创建对象,调用其他类的非静态方法也是这样,非静态方法调用非静态方法,也是必须创建对象并引用。
总结一下就是调用非静态方法必须采用引用.方法名(实参列表);无论调用者是静态或非静态,同类或不同类。
public class Test02 {
private int number=5;
public static void main(String[] args) {
Test02 t=new Test02();//创建对象
t.number=3;//本类中的私有成员变量可以使用引用.变量名的方式调用
System.out.println(t.number);
System.out.println(t.getnumber());//调用本类中的非静态方法
Student yan=new Student();
System.out.println(yan.getnum());//调用其他对象中的非静态方法
qqnumber();//调用本类中的静态方法
Student.studentage();//调用其他类中的静态方法
}
public int getnumber(){
return number;
}
public int changenumber(){
Student yan=new Student();
System.out.println(yan.getnum());//在非静态方法中调用其他类中的非静态方法
return number;
}
public static void qqnumber(){
System.out.println("人生苦短");
}
}
3、构造方法/函数
new 构造方法名(实参列表);构造函数的函数名和对象名称相同,而且而已构成函数/方法重载,不需要在前面写void而且每个构造方法都有返回值,且不需要写return。
在对象中没有任何方法时,构造方法后,系统会给该类提供一个无参数的构造方法,建议在开发中手动的为该类提供一个无参数构造方法。
public class Student {
private String name;
private String id;
private int num;
public Student(int num) {//构造方法1,有实参列表的构造方法
System.out.println(num);
}
public Student() {//构造方法2,这是系统默认的构造方法,用来初始化成员变量
System.out.println("欢迎来到英雄联盟");
}
public int getnum(){//获取num的方法,实例方法
return num;//返回值肉眼不可见,需要用相同类型的变量接受数据再输出才行
}
public Student(String id,String name) {
System.out.println(id+name);
}
public void Student(String name) {
System.out.println(name);
return;
}
}
使用自己的构造方法时,系统默认的构造方法会失效。可以选择性初始化成员变量。
4、参数传递,传递是存在变量里面的值
public class Test {
public static void main(String[] args) {
Userage u=new Userage(20);
System.out.println("这里的年龄是"+u.age);
Test.add(u);
}
public static void add(Userage u){
u.age++;
System.out.println("年龄是"+u.age);
}
}
class Userage{
int age;
public Userage(int a){
age=a;
}
}
四、反思与问题
1、在区分这些方法的时候有些混乱
2、其实构造方法:初始化成员变量,不含static和void,方法名和对象名必须相同。
3、不含static称为实例方法,含void的方法无需返回值,构造方法的方法名必须和对象名不同。
4、至于参数传递,多敲代码就应该能理解了。
5、经实践发现,相同类中的非静态方法调用本类中的另一个非静态方法,直接使用【方法名();】即可调用,前面省略了【this.】,指向的是这个对象/类本身,调用其他对象的则需要创建对象。
6、方法调用改善,编辑于2021.12.02
|