Java当中有关于继承顺序那些事

继承概念

  子类通过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方法。

关于继承的详细知识点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值