先给大家带来基础的代码
class Animal{
public String name;
public int age;
public void wash(){
System.out.println(name+"正在洗澡");
}
}
class Cat extends Animal {
public void xiaomi() {
System.out.println(name + "正在喵喵叫");
}
}
class Dog extends Animal{
public void xiaowang(){
System.out.println(name+"正在汪汪叫");
}
}
public class TestDemo {
public static void main(String[] args) {
Cat cat=new Cat();
cat.name="咪咪";
cat.age=2;
cat.wash();
cat.xiaomi();
Dog dog=new Dog();
dog.name="贝贝";
dog.age=3;
dog.xiaowang();
dog.wash();
}
}
Animal 是父类,将猫和狗都具有的特性放在父类中可以避免代码冗长,所以使用继承
public class Student {
public String name;
public int age;
public static String classroom="高三一班";
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Student student1=new Student("魏鸿雁",18);
Student student2=new Student("王一博",18);
System.out.println(student1.classroom);
System.out.println(student2.classroom);
}
}
发现了吗,班级是静态成员变量,但是仍然可以用实例化的对象去调用
也就是说,静态的成员变量可以用实例化的对象调用,也可以用类名直接调用
被static修饰的成员方法叫做静态成员方法,被static修饰的成员变量叫做静态成员变量被static修饰的叫做类对象,类方法,属于这个类,且静态的方法对象只编译一次
不属于对象,属于类,因此通过类名直接调用
非静态成员方法内部可以直接调动静态方法,静态方法内部不可以直接调用非静态的方法,因为调用非静态的方法的时候,必须通过new 出的对象来调用
静态方法中是不能用this的,
下面来说一说静态变量的初始化
1.直接赋值法
2.默认初始化
这个就是上一期说的那个默认值表中可以查到
3.可以通过提供get和set方法,进行初始化
alt+insert键,constructer中的getter and setter方法
代码块执行顺序
public class Student {
public String name;
public int age;
public static String classroom="高三一班";
public static int height;
public Student() {
System.out.println("不带参数的构造方法");
}
/* public Student(String name, int age) {
this.name = name;
this.age = age;
}*/
/* public Student(String name, int age,int he) {
this.name = name;
this.age = age;
height=he;
}*/
static {
System.out.println("静态代码块");
}
{
age=12;
System.out.println("实例代码块");
}
public static int getHeight() {
return height;
}
public static void func(){
{
System.out.println("定义在方法内部叫做普通代码块");
}
}
public static void setHeight(int height) {
Student.height = height;
}
@Override
public String toString() {
System.out.println("aaa");
return "bbb";
}
public static void main(String[] args) {
/*Student student1=new Student("魏鸿雁",18);
Student student2=new Student("王一博",18);*/
/* System.out.println(student1.classroom);
System.out.println(student2.classroom);
student1.setHeight(2);
System.out.println(getHeight());
System.out.println(student1);*/
Student student=new Student();
Student.func();
}
}
经过实践,我们发现执行顺序为:静态代码块>非静态代码块>不带参数的构造方法
toString 方法的理解
这是源码,我们在写这个代码的时候,用到了重写,把return的里面内容改变,也可以
今天的讲解就到这,我们下一期讲继承!!!886🎉🎉🎉