static
static:静态,可以修饰成员方法,成员变量。(是所有成员共享的)
static修饰的特点:
- 被类的所有对象共享(判断是否使用静态关键字的条件)
- 可以通过类名和对象名调用
- 在定义对象时,用static修饰了的对象只需赋值一次,其他的对象的该成员都是第一次赋值的值
如代码示例:
代码中直接对调用类名进行赋值,该类的所有对象的university成员都为“传智大学”了,不用再一一赋值。
static的访问特点
非静态的成员方法:
- 能访问静态的成员变量
- 能访问非静态的成员变量
- 能访问静态的成员方法
- 能访问非静态的成员方法
静态的成员方法:
- 能访问静态的成员变量
- 能访问静态的成员方法
也就是说:静态成员方法只能访问静态成员
多态
概述:同一个对象,在不同时刻表现出来的不同形态
例如:猫
我们可以说猫是猫:猫cat = new 猫();我们也可以说猫是动物: 动物 animal = new 猫();
这里猫在不同的时刻表现出来了不同的形态,这就是多态
也就是说:我们看见猫的时候,我们可以说这是一个动物,也可以直接说这是一只猫。
------------------------------------------------------------------------------------------------------------------
多态的前提和体现:
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
多态中成员访问特点
成员变量:编译看左边,执行看左边
成员方法:编译看左边,执行看右边因为成员方法有重写,而成员变量没有,所以他们的访问不一样
多态的好处与弊端
多态的好处:
提高了程序的扩展性
具体体现:在定义方法的时候,使用父类型作为参数,在使用的时候使用的是子类型参与操作多态的弊端:
多态不能访问子类特有的功能
多态中的转型
向上转型:
从子到父
父类引用指向子类对象
向下转型:
从父到子
父类引用转为子类对象
如示例代码:
多态的代码案例示例:猫和狗
//Animalpackage com;public class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}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 void eat(){System.out.println("动物吃东西");}
}//AnimalDemopackage com;public class AnimalDemo {public static void main(String[] args) {Animal a=new Cat();a.setName("加菲");a.setAge(5);System.out.println(a.getName()+","+a.getAge());a.eat();a=new Cat("加菲",5);System.out.println(a.getName()+","+a.getAge());a.eat();Animal b=new Dog();b.setName("旺旺");b.setAge(6);System.out.println(b.getName()+","+b.getAge());b.eat();b=new Dog("旺旺",6);System.out.println(b.getName()+","+b.getAge());b.eat();}
}//Cat
package com;public class Cat extends Animal {public Cat(){}public Cat(String name,int age){super(name,age);}@Overridepublic void eat() {System.out.println("猫吃鱼");}
}//Dog
package com;public class Dog extends Animal {public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("狗吃骨头");}
}