java 06 重寫(覆蓋) final 內部類
方法過載
-------------------
方法名稱一樣 ,只是型別不一樣叫過載
在有繼承的前提下才有方法的過載。
方法覆蓋(重寫)
---------------------------
1.和父類方法名稱相同
2.不能是私有方法
3.super可以訪問父類方法
4.注意事項(引數的形態必須一致,名稱無所謂。)
a.許可權要大於等於父類的許可權。(父類中可以是 void consume(int money){} 子類中是public void consume(int money){})
b.靜態的無法覆蓋非靜態的 即靜態覆蓋靜態的,非靜態的覆蓋非靜態的。 必須是一致的。
c.子類中的所有的建構函式都會預設訪問父類的空引數的建構函式,父類沒有空構造需要子類傳引數訪問
d.因為每一個建構函式的第一行都有一條預設的語句 super();
class OverrideDemo1{
public static void main (String[] args){
RiceMan2 s2 = new RiceMan2();
s2.consume(570);
}
}
class RiceMan{
public void consume(int money){
if (money<500){
System.out.println("消費了" + money+"w");
}
else {
System.out.println("消費限制,不能超過500W");
}
}
}
//繼承父類的,子方法中跟父類的方法一樣的話就會覆蓋掉
class RiceMan2 extends RiceMan{
public void consume(int money){
if (money<1000){
System.out.println("消費了" + money+"w");
}
else {
System.out.println("消費限制,不能超過1000W");
}
//super.consume(money); 可以通過super的方法呼叫父類的函式
}
}
簡單的重寫方法
--------------------------------------------------------
class OverrideDemo1{
public static void main (String[] args){
RiceMan2 s2 = new RiceMan2();
s2.consume();
}
}
class RiceMan{
public String name;
public String color;
public void consume(){
System.out.println("爬500W");
}
}
//繼承父類的,子方法中跟父類的方法一樣的話就會覆蓋掉
class RiceMan2 extends RiceMan{
public void consume(){
System.out.println("爬1500W");
}
}
final
----------------------------------
1.可以修飾方法、類、變數
類: final calss Dog //final修飾類那麼就不能繼承
方法: final void add() //final修飾方法那麼就不能重寫
欄位: final void add() //final修飾方法那麼就不能重寫
final
-------------------------------
1.修飾方法
方法:
final class Dog{}不能被繼承 不能被重寫
2.修飾的函式
方法:final class(){} 不能被重寫
3.修飾的欄位
類的成員
---------------------------------
1.成員變數
2.成員函式
3.構造程式碼塊
4.建構函式
5靜態程式碼塊
6.內部類
內部類:
----------------------------------------
1.定義在class內部的類。
2.編譯產生的outerclass$innerc.class
new Benz().fire();呼叫內部類中的方法
加final的修飾class
-----------------------------------------------------
class FinalDeom{
public static void main(String[] args){
Jing8 j = new Jing8 ();
j.watch();
}
}
final class Dog{
public void watch(){
System.out.println("來人了~~");
}
}
class Jing8 extends Dog{
public void watch(){
System.out.println("問一下~~");
super.watch();
}
}
加final 修飾方法 不能被重寫會報錯
-----------------------------------
class FinalDeom{
public static void main(String[] args){
Jing8 j = new Jing8 ();
j.watch();
}
}
class Dog{
//final 修飾方法 不能被重寫
public final void watch(){
System.out.println("來人了~~");
}
}
class Jing8 extends Dog{
public void watch(){
System.out.println("問一下~~");
super.watch();
}
}
final 修飾常量 不能被賦值
--------------------------------------------
class FinalDeom{
public static void main(String[] args){
Jing8 j = new Jing8 ();
j.name = "王春梅";
j.watch();
System.out.println(j.name);
}
}
class Dog{
//常量
public final String name ="哈哈哈";
public void watch(){
System.out.println("來人了~~");
}
}
class Jing8 extends Dog{
public void watch(){
System.out.println("問一下~~");
super.watch();
}
}
習題
---------------------------------------------
class FinalDeom2{
public static void main(String[] args){
Benz c = new Benz ();
c.fire();
c.color = "red";
System.out.println(c.color);
c.tires = 5;
System.out.println(c.tires);
c.run();
}
}
class Car{
public String color;
public int tires;
public void run(){
System.out.println("200無敵~~");
}
}
class Benz extends Car{
private String brand ="BENZ";
public final void fire(){
System.out.println("bombom~~");
}
}
呼叫內部類
-----------------------------------------------
class FinalDeom2{
public static void main(String[] args){
Benz c = new Benz ();
c.run();
}
}
class Car{
public String color ="黑色";
public int tires;
public void run(){
new Benz().fire();//匿名呼叫內部類中的方法
System.out.println("200無敵~~");
}
class Benz {
public final void fire(){
System.out.println("bombom~~");
}
}
}