文章目录
类和对象2
1、回顾上节
1.1、this用法
以下示例:
class Person{
public String name;
public int age;
//在一个构造方法中 可以去调用另外一个构造方法
//这时候先打印带两个参数的 后打印不带参数的 注意:不能成环 而且只能放在第一行
public Person(){
this("zhenzhen",99);
System.out.println("不带参数的构造方法");
}
/**
* 构造方法 可以发生重载
* @param name
* @param age
*/
public Person(String name,int age){
this.name = name;
this.age = age;
System.out.println("带有两个参数的构造方法");
}
public void sleep(){
int a = 0;
System.out.println(a);
//谁调用sleep谁就是this : this 代表当前对象的引用 person2
System.out.println(this.name + "正在吃饭!");
}
public void eat(){
this.sleep();
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class TestDemo {
public static void main(String[] args) {
//Person person1 = new Person();
System.out.println(new Person());
//跟上面一个效果
/*System.out.println("================================");
Person person2 = new Person();
System.out.println("================================");
Person person3 = new Person("weiwei",98);*/
}
public static void main1(String[] args) {
Person person1 = new Person();//Person()就是调用不带参数的构造方法
person1.name = "a wei";
person1.sleep();
Person person2 = new Person();//Person()就是调用不带参数的构造方法
person2.name = "zhenzhen";
person2.sleep();
}
}
2、static成员
2.1、学生类演示
实例化对象:
Student student1 = new Student("bit",18,34.6);
Student student2 = new Student("张三",28,14.6);
共有全部属性,如图:
没有加入 static 测试显示上面 class
这里第五行加入 static 之后 测试并没有 classes
这时候分析一下 static 修饰静态成员变量
class Student{
private String name;
private int age;
private double score;
private static String classes;
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public void doClsaa(){
System.out.println(this.name+ " 正在上课!");
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
public class TestDemo {
public static void main(String[] args) {
Student student1 = new Student("bit",18,34.6);
Student student2 = new Student("张三",28,14.6);
System.out.println("hello");
}
}
这里加入代码:
public static String classes;// 加入为第五行
//这里直接通过类名访问
Student.classes = “11Java”;
2.2、static修饰静态成员变量
插入代码:
public static void main(String[] args) {
Student student1 = null;
Student.classes = "104Java";
System.out.println(Student.classes);
}
运行后:
在普通方法去也可以使用静态成员变量
public static void main(String[] args) {
Student.classes = "104Java";
Student student1 = new Student("bit",18,34.6);
student1.doClass();
}
运行结果:
【静态成员变量特性】
3、代码块
3.1、什么是代码块及分类
3.2、实例代码块
代码演示:
{
this.name = "haha";
this.age = 19;
this.score = 88;
System.out.println("实例代码块!一般用来初始化实例普通成员变量成员");
}
【注意事项 】
3.3、静态代码块
注意事项
代码演示:
public static void main(String[] args) {
/**
* 1、调用带有三个参数的构造方法
*/
Student student1 = new Student("bit",18,34.6);
//System.out.println(student1);
System.out.println("====================================");
Student student2 = new Student("张三",28,14.6);
}
运行结果: