成员变量和成员方法

成员变量

1、成员变量的分类

实例变量:没有static修饰,也叫对象属性(实例变量),属于某个对象的,通过对象来使用

类变量:有static修饰,也叫类变量,属于整个类的,不是属于某个实例

2、如何声明成员变量?

【修饰符】 class 类名{
    
    
    【修饰符】 数据类型  属性名;    //属性有默认值
    【修饰符】 数据类型  属性名 =; //属性有初始值
}

说明:属性的类型可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)

例如:声明一个中国人的类

class Chinese{
    
    
	static String country;
	String name;
    char gender = '男';//显式赋值
}

3、如何在类外面访问成员变量?

(1)类变量

类名.静态成员变量  //推荐

对象名.静态成员变量 //不推荐

(2)实例变量

对象名.静态成员变量  //只能使用这种方式

4、成员变量的特点

类变量的值是所有对象共享的,而实例变量的值是每个对象独立的

public class TestChinese {
    
    
	public static void main(String[] args) {
    
    
		Chinese c1 = new Chinese();
		Chinese c2 = new Chinese();
		
		c1.name = "张三";
		c2.name = "李四";
        c2.gender = '女';
		
//		c1.country = "中国";
		Chinese.country = "中国";//推荐
		
		System.out.println("c1.country = " + c1.country + ",c1.name = " + c1.name + ",c1.gender = " + c1.gender);
		System.out.println("c2.country = " + c2.country + ",c2.name = " + c2.name + ",c2.gender = " + c2.gender);
	}	
}
class Chinese{
    
    
	static String country;
	String name;
    char gender = '男';
}

```java
class MyDate{
    
    
	int year;
	int month;
	int day;
}
class Employee{
    
    
	String name;
	MyDate birthday;
}
class Test09FieldExer3{
    
    
	public static void main(String[] args){
    
    
		//创建两个员工对象
		Employee e1 = new Employee();
		Employee e2 = new Employee();
		
		//为两个员工对象的成员变量赋值
		e1.name = "张三";
		e1.birthday = new MyDate();
		
		e2.name = "李四";
		e2.birthday = new MyDate();
		
		e1.birthday.year = 2000;
		e1.birthday.month = 1;
		e1.birthday.day = 1;
		
		e2.birthday.year = 2000;
		e2.birthday.month = 3;
		e2.birthday.day = 8;
		
		System.out.println("第一个员工,姓名:" + e1.name +",生日:" + e1.birthday.year + "年" + e1.birthday.month + "月" + e1.birthday.day + "日");
		System.out.println("第二个员工,姓名:" + e2.name +",生日:" + e2.birthday.year + "年" + e2.birthday.month + "月" + e2.birthday.day + "日");
	}
}

总结

类变量和实例变量的区别

一是没有static修饰的,这些成员变量是对象中的成员,称为实例变量。

二是有static修饰的,称为类变量(静态变量)。

成员方法

如何声明方法

1、方法声明的位置必须在类中方法外

2、语法格式

【修饰符】 返回值类型 方法名(【参数列表:参数类型1 参数名1,参数类型2 参数名, ......){
    
    
        方法体;
        【return 返回值;}
  • 修饰符: 修饰符后面一一介绍,例如:public,static等都是修饰符
  • 返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
    • 基本数据类型
    • 引用数据类型
    • 无返回值类型:void
  • 方法名:给方法起一个名字,见名知意,能准确代表该方法功能的名字
  • 参数列表:方法内部需要用到其他方法中的数据,需要通过参数传递的形式将数据传递过来,可以是基本数据类型、引用数据类型、也可以没有参数,什么都不写
  • 方法体:特定功能代码
  • return:结束方法,并将方法的结果返回去,
    • 如果返回值类型不是void,方法体中必须保证一定有return 返回值;语句,并且要求该返回值结果的类型与声明的返回值类型一致或兼容。
    • 如果返回值类型为void时,return 后面不用跟返回值,甚至也可以没有return语句。
    • return语句后面就不能再写其他代码了,否则会报错:Unreachable code

声明位置示例:

如何在其他类中调用方法

(1)实例方法

对象名.实例方法(【实参列表】)  //必须通过对象来访问

示例代码:

public class TestCircle {
    
    
	public static void main(String[] args) {
    
    
		Circle c1 = new Circle();
		c1.radius = 1.2;
		System.out.println("c1的面积:" + c1.area());
		//非静态方法只能通过"对象."进行访问
//		System.out.println("c1的面积:" + Circle.area());
        
		Circle c2 = new Circle();
		c2.radius = 2.5;
		System.out.println("c2的面积:" + c2.area());
	}
}
class Circle{
    
    
	double radius;
	public double area() {
    
    
		return Math.PI * radius * radius;
	}
}

(2)类方法

类名.类方法(【实参列表】)  //推荐

对象名.类方法(【实参列表】) //不推荐
public class TestCount {
    
    
	public static void main(String[] args) {
    
    
		System.out.println(CountTools.max(4, 1));
		
		//静态方法也可以通过“对象.”访问,就是麻烦点
		CountTools c = new CountTools();
		System.out.println(c.max(2, 5));
	}
}
class CountTools{
    
    
	static int max(int a, int b) {
    
    
		return a > b ? a : b;
	}
}

(3)总结

  • 形参:在定义方法时方法名后面括号中声明的变量称为形式参数(简称形参)即形参出现在方法定义时。
  • 实参:调用方法时方法名后面括号中的使用的值/变量/表达式称为实际参数(简称实参)即实参出现在方法调用时。

总结:

(1)调用时,需要传“实参”,实参的个数、类型、顺序顺序要与形参列表一一对应

​ 如果方法没有形参,就不需要也不能传实参。

(2)调用时,如果方法有返回值,可以接受或处理返回值结果,当然也可以不接收,那么此时返回值就丢失了。

​ 如果方法的返回值类型是void,不需要也不能接收和处理返回值结果。

静态方法和非静态方法的区别

1.静态方法 只能调用静态的方法和静态的属性 不能【直接】引用非静态的资源(属性 方法)

2.非静态的方法 不仅可以调用非静态的方法和属性 也可以调用静态的方法 和属性
    
why:
    因为静态修饰的资源围着类的加载而加载 非静态资源需要借助对象去调用
        
        当 静态资源准备完毕后  对象可能还没有产生

Guess you like

Origin blog.csdn.net/weixin_45905210/article/details/121344688