09-01 Java final,多态,抽象类,接口

final

方法,变量

<span style="color: #ff0000;"> 特点:
final可以修饰类,该类不能被继承。
final可以修饰方法,该方法不能被重写。(覆盖,复写)
final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。

<span style="color: #ff0000;"&gt;常量:
    A:字面值常量
        "hello",10,true
    B:自<a href="https://www.jb51.cc/tag/dingyichangliang/" target="_blank" class="keywords">定义常量</a>
        final int x = 10;

<span style="color: #008000;">*/

<span style="color: #008000;">//<span style="color: #008000;">final class Fu <span style="color: #008000;">//<span style="color: #008000;">无法从最终Fu进行继承

<span style="color: #0000ff;">class<span style="color: #000000;"> Fu {
<span style="color: #0000ff;">public <span style="color: #0000ff;">int num = 10<span style="color: #000000;">;
<span style="color: #0000ff;">public <span style="color: #0000ff;">final <span style="color: #0000ff;">int num2 = 20<span style="color: #000000;">;

</span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;
public final void show() {

}
</span><span style="color: #008000;"&gt;*/</span><span style="color: #000000;"&gt;

}

<span style="color: #0000ff;">class Zi <span style="color: #0000ff;">extends<span style="color: #000000;"> Fu {
<span style="color: #008000;">//<span style="color: #008000;"> Zi中的show()无法覆盖Fu中的show()
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> show() {
num = 100<span style="color: #000000;">;
System.out.println(num);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;无法为最终变量num2分配值
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;num2 = 200;</span>

<span style="color: #000000;"> System.out.println(num2);
}
}

<span style="color: #0000ff;">class<span style="color: #000000;"> FinalDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
Zi z = <span style="color: #0000ff;">new<span style="color: #000000;"> Zi();
z.show();
}
}

final修饰变量的特点:

age = 10<span style="color: #0000ff;">class<span style="color: #000000;"> FinalTest {
<span style="color: #0000ff;">public
<span style="color: #0000ff;">static
<span style="color: #0000ff;">void
<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">局部变量是基本数据类型
<span style="color: #0000ff;">int x = 10<span style="color: #000000;">;
x = 100<span style="color: #000000;">;
System.out.println(x);
<span style="color: #0000ff;">final <span style="color: #0000ff;">int y = 10<span style="color: #000000;">;
<span style="color: #008000;">//<span style="color: #008000;">无法为最终变量y分配值
<span style="color: #008000;">//<span style="color: #008000;">y = 100;
<span style="color: #000000;"> System.out.println(y);
System.out.println("--------------"<span style="color: #000000;">);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;局部变量是引用数据类型</span>
    Student s = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Student();
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(s.age);
    <span style="color: #ff0000;"&gt;s.age </span></span><span style="color: #ff0000;"&gt;= 100</span><span style="color: #000000;"&gt;<span style="color: #ff0000;"&gt;;//对象的堆内存是可以改变的</span>
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(s.age);
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(</span>"--------------"<span style="color: #000000;"&gt;);

    </span><span style="color: #0000ff;"&gt;final</span> Student ss = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Student();
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(ss.age);
    ss.age </span>= 100<span style="color: #000000;"&gt;;
    Sy<a href="https://www.jb51.cc/tag/stem/" target="_blank" class="keywords">stem</a>.out.println(ss.age);

    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;重新分配内存空间
    </span><span style="color: #ff0000;"&gt;//无法为最终变量ss分配值(地址值)</span>
    ss = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Student();
}

}

final修饰变量的初始化时机

方法完毕前。(非静态的常量) C:定义的时候就要赋值(静态的常量)
<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; num;
</span><span style="color: #0000ff;"&gt;final</span> <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; num2;

{
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;num2 = 10;</span>

<span style="color: #000000;"> }

</span><span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Demo() {
    num </span>= 100<span style="color: #000000;"&gt;;
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;无法为最终变量num2分配值</span>
    num2 = 200<span style="color: #000000;"&gt;;
}

}

<span style="color: #0000ff;">class<span style="color: #000000;"> FinalTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
Demo d = <span style="color: #0000ff;">new<span style="color: #000000;"> Demo();
System.out.println(d.num);
System.out.println(d.num2);
}
}

 

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...