JAVA学习笔记(10)

初始化块

初始化块

  • 作用类似构造方法,可以对对象进行初始化操作。
  • 无法传入任何参数,可以理解为提前执行的代码

使用初始化块

//class 类名{
//[修饰符]{
//        初始化块的可执行代码
//    }
//}

class Demo{
    {
        System.out.println("初始化块");
    }

    public Demo(){
        System.out.println("构造方法");
    }

}

public class Demo1 {
    public static void main(String[] args) {
        Demo Demo = new Demo();
    }
}

[buy] 如果有静态初始化块,会优先执行[/buy]

class Demo{
    static { //属于类
        System.out.println("静态初始化块");
    }
    { //属于对象  在初始化块中的变量属于局部变量,需要初始化
        System.out.println("初始化块");
    }

    public Demo(){ //属于对象
        System.out.println("构造方法");
    }
}

public class Demo1 {
    public static void main(String[] args) {
        Demo Demo = new Demo();
    }
}

运行结果:

Final 修饰符

final 关键字可用于修饰类,变量和方法。用来表示修饰的变量不可改变。

一旦初始化就无法赋值了。

[warning]final 只能在定义时,构造方法里以及初始化块中,无法在Main方法中赋值[/warning]

  • Final 修饰变量

定义必须初始化,一旦初始化就无法赋值

class Demo{
    final static int A  ;
    final int B  ;
    final int C = 10 ;  //定义

    static {  //静态初始化块
        A = 10 ;
    }

    public Demo (){ //构造方法
        B = 10 ;
    }

    public int getA(){
        return A ;
    }
    public int getB(){
        return B ;
    }
    
    public int getC(){
        return C;
    }

}

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

        Demo Demo = new Demo();

        System.out.println(Demo.getA());
        System.out.println(Demo.getB());
        System.out.println(Demo.getC());

        
    }

}
  • Final修饰数组

指向的地址无法改变,可以改变数组中元素的值

public class Demo {
    public static void main(String[] args) {
        final int[] Arr = {1,2,3};  //定义数组Arr 元素有 1,2,3
        for (int i = 0;i<Arr.length;i++){
            Arr[i] = Arr[i] * 2 ;  //元素大小乘2
            System.out.print(Arr[i] +" ," );  //遍历输出
        }
    }
}

输出结果:

  • Final 修饰方法

如果有子类,则无法对加 Final 的方法进行重写

  • Final 修饰类

将无法被继承

抽象类(abstract )

不包含方法体的方法称为 “抽象方法”,(在JAVA中只要有花括号括起来的都是方法体)

  • 作用&注意

拿来当父类使用,无法被实例化,abstract方法只能存在于abstract类中,abstract方法只能被重写

无法修饰属性,无法修饰构造方法,abstract只有重写才有意义

abstract class DemoAbstract {
    public abstract void Print1();  //抽象方法 Print1
    public void Print2(){ //普通方法 Print2
        System.out.println("DemoAbstract.Print2");
    }
}
public class Demo extends DemoAbstract{
    public void Print1(){  //重写抽象方法
            System.out.println("Demo.Print");
    }

    public static void main(String[] args) {
        Demo Demo = new Demo();
        Demo.Print1();  //继承重写的抽象方法
        Demo.Print2();  //抽象类写的普通方法
    }
}

[noway] abstract无法和final同时使用[/noway]

abstract 构造方法

abstract class DemoAbstract {

    String Name ;

    public DemoAbstract(String Name){
        this.Name = Name;  //抽象类中的构造方法 DemoAbstract
    }

}

public class Demo extends DemoAbstract{

    public Demo(String Name){  //子类的构造方法
        super(Name); //super调用父类 DemoAbstract 的构造方法
    }

    public static void main(String[] args) {
        Demo Demo = new Demo("Name");
        System.out.println(Demo.Name);  //输出父类 DemoAbstract 的属性 Name 的值
    }

}

作者: Xenolies
文章标题 :JAVA学习笔记(10)
文章链接 : https://xenolies.xyz/2022/05/06/1887/
文章URL : https://xenolies.xyz/2022/05/06/1887/
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇