先给大家带来基础的代码
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🎉🎉🎉