Day09-1.继承的特点 、代码块 、final关键字

本文详细介绍了Java中的继承特性,包括单继承、多层继承和多继承的概念。此外,还探讨了不同类型的代码块,如局部代码块、构造代码块和静态代码块的作用和执行顺序。最后,讲解了final关键字的用法,包括修饰类型、方法和变量时的意义和限制。通过实例展示了final关键字如何确保变量的不可变性和防止方法被重写。
摘要由CSDN通过智能技术生成

1 继承的特点

  1. 特点:类之间继承,支持单继承,支持多层继承,不支持多继承
  2. 说明:
    单继承:一个子类,只继承一个父类
    多层继承:C类继承B类,B类继承A类 ;C类就是最底层的子类,A类就是最顶层的父类;C类对象既可以使用本类内容,也可以使用父类B的内容,也可以使用C类内容
    多继承:一个类型,同时继承多个父类(一个子类只能有一个亲爹)

2 代码块

  1. 概述:使用{}定义的一段代码,代码块在内存中有一段特殊的空间执行
  2. 分类:
    局部代码块
    构造代码块
    静态代码块

2.1 局部代码块

  1. 概念:在方法中使用{}定义的一段代码
  2. 作用:及时回收空间,节约内存
  3. 特点:
    (1)在代码块中定义的变量,随着代码块的结束,空间被回收,及时清理内存
    (2)在代码块外定义了一个变量,在代码块中修改变量的值,随着代码块的结束,变量的值是修改之后的。

代码

package demos2;

public class Demo01 {
    public static void main(String[] args) {
        //在代码块外定义的变量
        int a = 10;
        {
            //代码块中可以使用代码块外定义的变量
            a = 100;
            System.out.println(a);//100


            //在代码块中定义的变量,随着代码块的结束被回收,出了代码块就不能使用
            int b = 10;
            System.out.println(b);
        }
        //随着代码块的结束,值是修改之后的
        System.out.println(a);//100
    }
}

2.2 构造代码块

  1. 概念:在类中方法外使用{}定义的一段代码
  2. 特点:
    (1)在创建对象时,有虚拟机默认执行
    (2)在创建对象的时候,先执行构造代码块,后执行构造方法
    (3)每创建一个对象,都会执行一次构造代码块
  3. 作用:
    (1)可以对属性进行初始化
    (2)可以将空参构造和有参构造中的一些共同内容提取到构造代码块中定义

代码

package demos2;

public class Demo02 {
    public static void main(String[] args) {


//        System.out.println(Person.age);
        Person per = new Person();
        System.out.println(per.name);
        Person per2 = new Person("张三");
        System.out.println(per2.name);
    }
}
class Person{
    String name;
    static int age;
    public Person(){
        System.out.println("空参构造方法执行了");//2

    }
    public Person(String name){
        this.name = name;
        System.out.println("有参构造方法执行了");//4

    }
    //在创建对象时,执行构造代码块,在构造方法之前执行
    {
        //可以给属性初始化
        name = "李四";
        System.out.println("构造代码块执行了");//1  3
        //可以将有参空参相同内容进行抽取
        System.out.println("一个对象诞生了");
    }
}

2.3 静态代码块

  1. 概念:在类中方法外使用static关键字修饰代码块
  2. 特点
    (1)在类型被加载的时候被虚拟机默认执行
    (2)在创建对象之前就执行
    (3)因为在程序一次执行中,类型只会加载一次,所以静态代码块也只执行一次
    (4)静态代码块中不能访问非静态的内容
  3. 作用:
    (1)可以给静态属性初始化
    (2)可以将类型执行需要加载的资源,定义在静态代码块中(比如:驱动加载)

代码

package demos2;
public class Demo04 {
    static{
        System.out.println("Demo04的静态代码块执行了");//1
    }
    {
        System.out.println("Demo04的构造代码块执行了");
    }
    public static void main(String[] args) {
        System.out.println("main方法执行了");//2
        A a = new A();
        A a2 = new A("张三");
    }
}
class A{ String name;
    public A(){
        System.out.println("A类的空参构造方法执行了");//5
    }
    public A(String name){
        System.out.println("A类的有参构造方法执行了");//7
    }
    {
        System.out.println("A类的构造代码块执行了");//4   6
    }
    static{
        System.out.println("A类的静态代码块执行了");//3
    }
}

3 final关键字

  1. 概念:final:最后的,最终的
  2. 修饰类型、修饰方法、修饰变量
  3. final修饰类型:
    使用final关键字修饰的类型,该类型不能有子类
  4. final修饰方法:
    使用final修饰方法之后,该方法不能被子类重写
    但是可以被子类继承
  5. final修饰变量:
    使用final修饰变量之后,该变量的值就不能被修改
    使用关键字修饰的变量,就变为常量,这个常量有名字来定义(符号常量)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值