static
static可以修饰成员变量,也可以修饰成员方法,是Java中的一个修饰符。
被static修饰的成员变量叫静态变量:
1)特点:它被类所有对象共享;加载时随类一起加载,优先于对象的加载。
2)调用方式:类名.静态变量 或者 类的对象名.静态变量
被static修饰的成员方法叫静态方法:
1)特点:多用在测试类或工具类中,JavaBean类中很少使用、
2)调用方式:类名.方法名 或 类的对象名.方法名
封装
对象代表什么,就封装对应的数据并提供相应的行为。如Student类中 定义 姓名、年龄、学习的行为。
继承
当类与类直接存在相同的内容,并且子类是父类中的一种,就可以考虑使用继承。使用 extends 关键字,格式:
public class 子类 extends 父类 {}
继承的好处:将多个子类中重复的代码抽取到父类中,减少代码冗余,子类可直接使用,提高代码复用性
继承后子类的特点:子类可使用父类中的属性和行为,也可在父类的基础上新增其他行为,使功能更强大
继承的特点:只支持单继承(一个子类只能继承一个父类),不支持多继承(一个子类继承多个父类),但支持多层继承(A继承B,B继承C);所有的类都直接或间接继承Object类;子类只能访问父类中非私有的成员;子类不能继承父类的构造方法,能继承私有和非私有的成员变量,只能继承非private、非static、非final修饰的成员方法
继承中成员方法的访问特点:就金原则,出现重名的从本类开始往上找
继承中成员方法的访问特点:就近原则,super访问父类中的方法,子类可重写父类的方法。重写要求:方法名、形参与父类一致;访问权限大于等于父类;返回值类型小于等于父类
继承中构造方法的访问特点:父类的构造方法不能被继承,可通过super访问;子类构造方法的第一行有一个默认的super(),默认先访问父类的无参构造方法,再执行自己;想要访问父类的有参构造,需写super括号中的参数。
示例:
public class FuZiTest2 {
public static void main(String[] args) {
System.out.println("------创建cat对象------");
Cat cat = new Cat();
System.out.println("------cat对象的show方法------");
cat.show();
System.out.println("------cat对象的eat方法------");
cat.eat();
System.out.println("------创建cat2对象-----");
Cat cat2 = new Cat("happy");
System.out.println(cat2.getName());
System.out.println("------创建animal对象------");
Animal animal = new Animal();
System.out.println("------animal对象的eat方法------");
animal.eat(); //eat food
}
}
class Animal {
String nikeName = "animal";
String name;
public void eat(){
System.out.println("eat food");
}
public Animal() {
System.out.println("Animal的无参构造方法");
}
public Animal(String name) {
this.name = name;
System.out.println("Animal的有参构造方法,name值是:" + name);
}
}
class Cat extends Animal {
String nikeName = "cat";
public void show() {
String nikeName = "orange cat";
System.out.println(nikeName); //orange cat
System.out.println(this.nikeName); //cat
System.out.println(super.nikeName); //animal
}
@Override
public void eat() {
super.eat(); //eat food
System.out.println("eat fish"); //eat fish
}
public Cat(){
super(); //可不写
System.out.println("Cat的无参构造方法");
}
public Cat(String name) {
super(name);
}
public String getName() {
return name;
}
}
结果:
------创建cat对象------
Animal的无参构造方法
Cat的无参构造方法
------cat对象的show方法------
orange cat
cat
animal
------cat对象的eat方法------
eat food
eat fish
------创建cat2对象-----
Animal的有参构造方法,name值是:happy
happy
------创建animal对象------
Animal的无参构造方法
------animal对象的eat方法------
eat food