类和对象
类:一组具有相同特征的对象的抽象,类中定义了所有该类对象所具备的属性和方法
class Person {
//属性,方法,代码块
}
对象:某个类的一个具体的实现,使用new关键字创建一个对象。
封装:保护性和易用性
private实现属性和方法的封装只是封装的其中的一种
private<default<protected<public
1.static关键字
初识类和对象,我认为static是一个关键点
注意,静态方法时在jvm虚拟机方法区中存放的,看到static的第一眼就要想到与对象无关。
在类中定义常量,一般都会使用全局常量
命名规则所有单词全部大写,多个单词使用下划线分隔
this 表示当前对象的引用
1.调用当前对象的成员变量
class Person {
public String name;
private int age;
private String sex;
static int a =1000;
public Person(String name) {
this.name = name;
System.out.println("有参");
}
}
public class TestDemo {
public static void main(String[] args) {
Person per = new Person("sssoo");
System.out.println(per.name);
2.调用当前对象的方法 (1)调用普通成员方法 (2)构造方法的互相调用
3.表示当前对象的引用
构造方法
构造方法为类中成员变量赋值,之所以类中的属性存在默认值就是因为默认值就是在构造方法中赋值的。
class Person {
private String name;
private int age;
private String sex;
static int a =1000;
public Person() {
System.out.println(this.name+this.age+this.sex);
}
构造方法的重载一般只会存在方法参数个数不同,类型成员变量已经规定好了。
class Person {
private String name;
private int age;
private String sex;
static int a =1000;
public Person() {
System.out.println(this.name+" "+this.age+" "+this.sex);
}
public Person(String name) {
this.name = name;
System.out.println(this.name);
}
public Person(String name,int age) {
this.name = name;
this.age = age;
System.out.println(this.name+" "+this.age);
}
}
public class TestDemo {
public static void main(String[] args) {
Person per = new Person();
Person per1 = new Person("laogong");
Person per2 = new Person("laogong",18);
代码块
普通代码块
定义在方法中,作用域就是当前代码块{}
public static void main(String[] args) {
{
int a = 10;
System.out.println(a);
}
int a = 20;
System.out.println(a);
成员代码块
直接定义在类中,不加任何修饰符的代码块,优先于构造方法执行,有几个对象就调用几次
class Person {
private String name;
private int age;
private String sex;
static int a =1000;
{
this.name = "test";
}
在执行时,会优先执行这个代码块(没有静态代码块的前提下)。
静态代码块
在类加载是执行一次,主类中的静态块优于主方法执行
class Person {
private String name;
private int age;
private String sex;
static int a =1000;
static {
System.out.println("静态块");
}
主类中的静态块优先于主方法执行。JVM要执行主方法,首先得加载主类,主类一加载,静态块就执行了。
int age;
private String sex;
static int a =1000;
static {
System.out.println(“静态块”);
}
主类中的静态块优先于主方法执行。JVM要执行主方法,首先得加载主类,主类一加载,静态块就执行了。