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(); // 不会报错
}