类和对象
类:定义的模板
对象:通过模板创造具体的事物,也就是类的实例
类组成
变量(作用:保存特征)
类变量(静态变量,static修饰)
成员变量
方法(作用:描述某种行为)
类方法(静态方法,static修饰,如main方法)
成员方法
public class Test {
//类变量
public static String country = "CN";
//成员变量
public String city = "深圳";
//成员方法
public String address() {
//局部变量
int a = 1;
return country+city;
}
//类方法
public static void main(String[] args) {
Test t = new Test();
t.address();
}
}
访问修饰符
public > protected > default > private
public:公开的,哪里都能访问
protected:包括同一个包下的所有类和不同包的子类
default:同一个包下可以访问
private:只有自己可以访问
面向对象特征
封装:将数据或函数(方法)等集合在一个单元中(类),隐藏实现细节;
继承:主要实现代码重用,关键词extends
多态:同一个行为(方法)具有多个不同表现形式或形态的能力(重载和重写)
相同方法
方法名相同
形参相同(除了参数名可以不一样,其他都必须一模一样:个数、类型、顺序)
重载和重写
重载:同一个类中的同名方法,但是不是相同方法
重写:父子类中的相同方法,接口实现类中的相同方法
非静态方法代码块
非静态的方法代码块,会随着每一次对象的创建而执行一次。
public class ParameterTest2 {
static int s;
int i;
int j;
{
int i =1;
// 这里就近原则,i计算的上面i=1的值,而不是this.i的值
i++;
// 计算this.j
j++;
// 计算this.s
s++;
}
public void test(int j) {
// 这里就近原则,j计算的上面形参j的值,而不是this.j的值
j++;
// 计算this.i
i++;
// 计算this.s
s++;
}
public static void main(String[] args) {
ParameterTest2 parameterTest2 = new ParameterTest2();
ParameterTest2 parameterTest3 = new ParameterTest2();
parameterTest2.test(10);
parameterTest2.test(20);
parameterTest3.test(30);
//2,1,5
System.out.println(parameterTest2.i+","+parameterTest2.j+","+ParameterTest2.s);
//1,1,5
System.out.println(parameterTest3.i+","+parameterTest3.j+","+ParameterTest2.s);
}
}