java ——类与方法

1.类的定义
(1) 格式
public class ClassName{
// 成员变量
// 成员方法
}
(2) 举例

public class Person {
//定义成员变量
private String name;//姓名
private int age;//年龄
private char gendar;//性别
//定义成员方法
/**
* study方法
*
*/
public void study(){
System.out.println("好好学学习,天天向上");
}
/**
* sleep();睡觉
*/
public void sleep(){
System.out.println("学习一天了,可以睡觉了");
}
}

2.方法的定义
https://blog.csdn.net/mrbacker/article/details/79181869

修饰符 返回值类型 方法名(参数类型 参数名){
    ...
    方法体
    ...
    return 返回值;
}

在这里插入图片描述
有结果返回——数据类型(基本类型,引用类型)

public class TestDemo {
	public static void main(String[] args) {
		int result = add(10, 20);
		System.out.println(result);
		//既然方法有返回值,那么这些返回值也可以直接输出
		System.out.println(add(100, 200));
	}
	public static int add(int x, int y) {	//定义方法
		return x + y;
	}
}

无结果返回——void:没有返回值

public class TestDemo {
	public static void main(String[] args) {
		print("Hello");	//主方法里面直接调用方法
		print("	world");
		print("!");
	}
	public static void print(String msg) {	//定义方法
		System.out.print(msg); 
	}
}

2.java反射
https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html
【正射】
类声明+实例化
Apple apple = new Apple(); //直接初始化,「正射」
apple.setPrice(4);
【反射】
(1) 使用反射获取一个对象的步骤

  • 获取类的 Class 对象实例
Class clz = Class.forName("com.zhenai.api.Apple");
  • 根据 Class 对象实例获取 Constructor 对象
Constructor appleConstructor = clz.getConstructor();
  • 使用 Constructor 对象的 newInstance 方法获取反射类对象
Object appleObj = appleConstructor.newInstance();

(2)

  • 获取方法的 Method 对象
Method setPriceMethod = clz.getMethod("setPrice", int.class);

3.静态/非静态变量、静态/非静态方法
https://segmentfault.com/a/1190000022581229

class Test{
	//静态变量
	public static int id =1;
	// 普通变量
    public int usualId = 2;
    // 静态常量
    public static final int finalNextId = 3;
    // 静态方法
    public static void A(){
        // 静态方法只能访问静态字段,不能访问非静态字段
        System.out.println("this is static function A!");
    }
    // 普通方法
    public void B(){
        // 普通方法可以访问静态字段和非静态字段
        System.out.println("this is usual function B!");
}

3.1静态/非静态变量
静态变量(带有static关键字的字段)是属于类的,所有该类的对象共用该字段;
非静态变量(普通字段)是属于类的对象的,每一个该类的对象都有自己的非静态字段,他们互不影响。

class Test{
    // 静态变量
    public static int id = 1;
    // 普通变量
    public int usualId = 2;
}
class TestA{
    // 对于静态字段,不实例化类(即创建对象)就可使用
    Test.id; // 对于普通字段,Test.usualId 就会报错
    // 对于普通字段,需要先实例化类
    Test test = new Test();
    test.usualId; // 不会报错
}

静态/非静态方法
静态方法与普通方法的区别,与静态字段与普通字段的区别类似
静态方法是不在对象上执行的方法,在调用静态方法时,不需要实例化该类而调用普通方法必须实例化该类。

class Test{
    // 静态方法
    public static void A(){
        // 静态方法只能访问静态字段,不能访问非静态字段
        System.out.println("this is static function A!");
    }
    // 普通方法
    public void B(){
        // 普通方法可以访问静态字段和非静态字段
        System.out.println("this is usual function B!");
    }
}
class TestA{
    // 对于静态方法,不实例化类(即创建对象)就可调用
    Test.A(); // 对于普通字段,Test.B()就会报错
    // 对于普通方法,需要先实例化类
    Test test = new Test();
    test.B(); // 不会报错
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值