继承概念
子类通过extend关键字,继承父类的一些属性和方法
class ⽗类名称{
}
class ⼦类名称 extends ⽗类名称{
}
静态方法概念
-
static 修饰的⽅法或变量,**优先于对象执⾏,**所以内存有会现有 static修饰的内容,后有对象的内容
-
因此类变量或者类⽅法,可以直接通过类名.⽅法名或者变量名进⾏调⽤,不⽤经过对象
static变量也称作静态变量
- 和⾮静态变量的区别是,静态变量被所有的对象所共享,在内存中只有⼀份,它当且仅当在 类初次加载时会被初始化。(被所有对象共享简单来说就是:无论你创建了多少个对象,在java内存当中,只会有一个age,而且这些对象都可以调用age)
public class Cat(){
static int age;
String name;
public void test(){
//语句
}
}
- ⾮静态变量是对象所拥有的,在创建对象的时候被初始化,存在 多个副本,各个对象拥有的副本互不影响(简单来说就是,非静态变量,你创建多少对象就可以创建多少age)
静态变量:
综上可知,age无论如何变化,始终只存在一个值。
非静态方法可以访问静态;静态方法不能访问非静态
关于静态与非静态方法的详细介绍
构造方法概念
1. 一种特殊的方法
2. 创建对象用来初始化对象,每次用new创建对象的时候就会使用构造函数
3. 与类具有相同的名称,但是没有返回值
4. Java会为每一个类提供一个默认的构造函数
5. 如果自定义了构造函数,就不再适用默认的构造函数,如果没有显示写出默认的构造函数则会消失
继承顺序的介绍
Java继承后类的初始化顺序
代码如下
public class Father {
static {
System.out.println("⽗类静态代码块");
}
public Father(){
System.out.println("father ⽆参构造函数");
}
public void sleep(){
System.out.println("father sleep⽅法");
}
}
public class Children extends Father{
static {
System.out.println("Child静态代码块");
}
public Children(){
//super();
System.out.println("Child⽆参构造函数");
super.sleep();
}
public void sleep(){
System.out.println("Child sleep⽅法");
}
}
有上面代码可知,执行的顺序依次是:
父类的静态代码块
Child静态代码块
father无参构造函数
Child的无参构造函数
father的sleep方法
Child的 sleep放方法
在java程序当中,静态代码块会优先执行(原因本人也不太清楚,只知道,语法是这样)因此父类和Child当中的静态代码块优先执行,之后由于继承的原因先有父类后有子类所以现有的father的无参构造然后是Child的无参构造方法之后通过super关键字调用了父类的sleep方法最后执行Child的sleep方法。