类:一个模板,有类才能产生对象(概念性的)
类中包含了对象所具备的属性和方法
class Person{
//成员变量,实例变量,属性
String name;
int age;
//成员方法,实例方法
public void fun(){}
}
对象:类的具体实例化,根据类来产生对象,使用关键字new
Person per=new Person();
看见new就有新空间,新对象。
类中的构造方法:当产生对象时由编译器自动调用
若我选择自己定义了构造方法,则默认的无参构造则不会生成
1.若定义类时没有指出明确的构造方法,编译器会自动产生一个无参构造
构造方法定义:与类名称相同,没有返回值声明的方法
2.构造方法的重载:参数的个数,构造方法就是为了给类中的属性做初始化
重载:定义在一个类中,若干个方法名称相同,参数的个数或者类型不同的一组方法叫重载方法,与方法的返回值无关。
3.构造方法的相互调用
a.必须放在首行 this(参数);
class Person{
String name;
int age;
//alt+insert
public Person(int age) {
this();
this.age = age;
}
public Person(){}
public Person(String name,int age){
this(age);
this.name=name;
}
}
b.不能成环
static关键字:静态关键字
看见static就表示与对象无关,static修饰的方法和属性是与类本身相关,static属性所有对象共享。
所有static域直接通过类名称访问,不需要对象就可以用,eg:Arrays.sort()
内存区域划分
1.栈(方法中的局部变量,引用)
当程序进入一个方法时,会为了这个方法单独分配一块私属存储空间,用于存储这个方法里的局部变量,当这个方法结束时,分配给这个方法的栈会被释放,这个栈中的变量也会被随时释放。
注意:方法中的局部变量若使用final修饰,放在堆里,而不是栈里。
2.堆(所有new出来的对象 int[] String s new Person(),全局变量 )
3.JVM方法区(静态变量)
代码块:使用大括号括起来的代段块就成为代码块,根据出现的位置和关键字化分为四类
普通代码块:定义在方法中,使用大括号括起来的代码块(了解)
构造块:定义在类中,不加任何修饰符,使用{},优先与构造方法执行,有几个对象就调用几次
静态块:定义在类中,使用static修饰的代码块,优先于构造块执行,类加载(main方法中使用了该类)时执行,只会被执行一次
面向对象编程的三大特性:封装,继承,多态
封装 private对属性做了封装处理,只在类的内部可见。一般来说,类的成员变量统一使用private进行封装。方法使用与否看具体情况。
public:公共的属性或者方法,无论什么时候都可见