Java中多态与static的用法

2021-04-30 13:51:13
## 1.什么是多态: 多态成立的3个条件: 1.子类继承或实现父类 2.子类重写父类方法 3.父类引用指向子类对象 ```java // 创建Animal类,父类 class Animal{ public String name; // 可被子类访问的name public Animal() { this.name = "Animal"; } public void printName(){ System.out.println(name); } } //创建子类 class Cat extends Animal{ Cat(){ name = "Cat"; } } public class Test { public static void main(String[] args) { Animal cat = new Cat(); cat.printName(); //Cat Animal animal = new Animal(); if(animal instanceof Cat){ //进行判断,判断进行转为的为继承关系,否则报ClassCastException异常 animal = (Cat)animal; //强制转换,将父类对象强制转换为子类对象 } animal.printName(); //Animal } } ``` ## 2.java中static关键字的作用 被static修饰的为静态字段与静态方法,即类字段。 在类中定义static字段,即使类没有被实例化,static也存在。static属于类,不属于任何单位。 ```java //static修饰静态字段 class Animal{ public static String name = "animal"; } public class Test { public static void main(String[] args) { System.out.println(Animal.name); //animal } } //static修饰静态方法 class Animal{ public static String name = "animal"; public int id = 0; //static 方法只能访问static字段,不可访问飞静态字段,不然,由类名调用时,可以操作非静态字段。 /*public static int get(){ //不可访问,直接报错 return id; }*/ public static String get(){ //正确 return name; } } //静态方法只能调用静态方法 public class Test { public static int get(){ int i = 0; return i; } public static void main(String[] args) { System.out.println(get()); //animal } } //静态代码块 class Animal{ static{ System.out.println("ssss"); } } public class Test { public static void main(String[] args) { Animal animal = new Animal(); //输出Animal,在类进行实例化时,直接运行类中静态代码块,且只运行一次 Animal animal2 = new Animal(); //并不会输出Animal } } ``` 在C语言中,函数内部定义的static字段,只有内部可以访问,函数外部不可以访问,但因为在静态区间内,所以,只有在程序销毁,才会消失。