日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java基础day10

發布時間:2025/3/12 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java基础day10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java基礎day10

  • Java基礎day10-繼承&修飾符
  • 1 繼承
    • 1.1 繼承的實現
    • 1.2 繼承的好處和弊端
  • 2. 繼承中的成員訪問特點
    • 2.1 繼承中變量的訪問特點
    • 2.2 super
    • 2.3 繼承中構造方法的訪問特點
    • 2.4 繼承中成員方法的訪問特點
    • 2.5 super內存圖
    • 2.6 方法重寫
    • 2.7 方法重寫的注意事項
    • 2.8. Java中繼承的注意事項
  • 3. 繼承練習
    • 3.1 老師和學生
    • 3.2 貓和狗
  • 4. 修飾符
    • 4.1 package
    • 4.2 import
    • 4.3 權限修飾符
    • 4.4 final
    • 4.5 final修飾局部變量
    • 4.6 static
    • 4.7 static訪問特點

Java基礎day10-繼承&修飾符

1 繼承

1.1 繼承的實現

  • 繼承的概念
    繼承是面向對象三大特征之一,可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,以及追加屬性和方法
  • 實現繼承的格式
    繼承通過extends實現
    格式:class 子類 extends 父類 { }
    舉例:class Dog extends Animal { }
  • 繼承帶來的好處
    繼承可以讓類與類之間產生關系,子父類關系,產生子父類后,子類則可以使用父類中非私有的成員。
public class Fu {public void show(){System.out.println("show方法被調用");} }public class zi extends Fu {public static void method() {System.out.println("method被調用");} }public class demo {public static void main(String[] args) {Fu f = new Fu();f.show();zi z = new zi();zi.method();z.show();} }

1.2 繼承的好處和弊端

  • 繼承好處
    提高了代碼的復用性(多個類相同的成員可以放到同一個類中)
    提高了代碼的維護性(如果方法的代碼需要修改,修改一處即可)
  • 繼承弊端
    繼承讓類與類之間產生了關系,類的耦合性增強了,當父類發生變化時子類實現也不得不跟著變化,削弱了子類的獨立性
  • 繼承的應用場景:
    使用繼承,需要考慮類與類之間是否存在is…a的關系,不能盲目使用繼承
    is…a的關系:誰是誰的一種,例如:老師和學生是人的一種,那人就是父類,學生和老師就是子類

2. 繼承中的成員訪問特點

2.1 繼承中變量的訪問特點

在子類方法中訪問一個變量,采用的是就近原則。

  • 子類局部范圍找
  • 子類成員范圍找
  • 父類成員范圍找
  • 如果都沒有就報錯(不考慮父親的父親…)
  • public class Fu {int num = 0; }public class Zi extends Fu{int num = 20;public void show() {int num = 30;System.out.println(num);} }public class demo {public static void main(String[] args) {Zi z = new Zi();z.show(); //輸出30} }

    2.2 super

    • this&super關鍵字:
      this:代表本類對象的引用
    • super:代表父類存儲空間的標識(可以理解為父類對象引用)
      this和super的使用分別
    • 成員變量:
      this.成員變量 - 訪問本類成員變量
      super.成員變量 - 訪問父類成員變量
    • 成員方法:
      this.成員方法 - 訪問本類成員方法
      super.成員方法 - 訪問父類成員方法
    • 構造方法:
      this(…) - 訪問本類構造方法
      super(…) - 訪問父類構造方法

    2.3 繼承中構造方法的訪問特點

    注意:子類中所有的構造方法默認都會訪問父類中無參的構造方法
    子類會繼承父類中的數據,可能還會使用父類的數據。所以,子類初始化之前,一定要先完成父類數據的初始化, 原因在于,每一個子類構造方法的第一條語句默認都是:super()

    問題:如果父類中沒有無參構造方法,只有帶參構造方法,該怎么辦呢?1. 通過使用super關鍵字去顯示的調用父類的帶參構造方法 2. 在父類中自己提供一個無參構造方法

    2.4 繼承中成員方法的訪問特點

    通過子類對象訪問一個方法 1. 子類成員范圍找 2. 父類成員范圍找 3. 如果都沒有就報錯(不考慮父親的父親…)

    2.5 super內存圖

    2.6 方法重寫

    - 1、方法重寫概念 子類出現了和父類中一模一樣的方法聲明(方法名一樣,參數列表也必須一樣) - 2、方法重寫的應用場景 當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣,即沿襲了 父類的功能,又定義了子類特有的內容 - 3、Override注解 用來檢測當前的方法,是否是重寫的方法,起到【校驗】的作用

    2.7 方法重寫的注意事項

    方法重寫的注意事項

  • 私有方法不能被重寫(父類私有成員子類是不能繼承的)
  • 子類方法訪問權限不能更低(public > 默認 > 私有)
  • 示例代碼

    public class Fu {private void show() {System.out.println("Fu中show()方法被調用");}void method() {System.out.println("Fu中method方法被調用");} }public class Zi extends Fu{@Override/* 編譯【出錯】,子類不能重寫父類私有的方法*//*private void show(){System.out.println("Zi中show方法被調用");}*//* 編譯【出錯】,子類重寫父類方法的時候,訪問權限需要大于等于父類 *//*private void method (){System.out.println("zi中method方法被調用");}*//* 編譯【通過】,子類重寫父類方法的時候,訪問權限需要大于等于父類 */public void method () {System.out.println("zi中method方法被調用");} }

    2.8. Java中繼承的注意事項

    • Java中繼承的注意事項
  • Java中類只支持單繼承,不支持多繼承
    錯誤范例:class A extends B, C { }
  • Java中類支持多層繼承
    • 多層繼承
      示例代碼:
    public class Granddad {public void drink(){System.out.println("drink");} }public class Father {public void smoke() {System.out.println("smoke");} }public class Mother {public void dance(){System.out.println("dance");} }public class Son extends Father,Granddad { }

    3. 繼承練習

    3.1 老師和學生

    需求: 定義老師類和學生類,然后寫代碼測試;最后找到老師類和學生類當中的共性內容,抽取出一個父 類,用繼承的方式改寫代碼,并進行測試 步驟: ①定義老師類(姓名,年齡,教書()) ②定義學生類(姓名,年齡,學習()) ③定義測試類,寫代碼測試 ④共性抽取父類,定義人類(姓名,年齡) ⑤定義老師類,繼承人類,并給出自己特有方法:教書() ⑥定義學生類,繼承人類,并給出自己特有方法:學習() ⑦定義測試類,寫代碼測試

    示例代碼:

    public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }public class Teacher extends Person {public Teacher() {}public Teacher(String name, int age) {super(name, age);}public void teach(){System.out.println("教導能力");} }public class Student extends Person{public Student() {}public Student(String name, int age) {super(name, age);}public void study(){System.out.println("學習能力");} }public class demo {public static void main(String[] args) {Teacher t = new Teacher();t.setName("林青霞");t.setAge(30);System.out.println(t.getName()+","+t.getAge());t.teach();Teacher t2 = new Teacher("林青霞",30);System.out.println(t2.getName()+","+t2.getAge());t.teach();Student s = new Student("張三",23);System.out.println(s.getName()+","+s.getAge());s.study();} }

    3.2 貓和狗

    • 需求:
      請采用繼承的思想實現貓和狗的案例,并在測試類中進行測試

    • 分析:
      ①貓:
      成員變量:姓名,年齡
      構造方法:無參,帶參
      成員方法:get/set方法,抓老鼠()
      ②狗:
      成員變量:姓名,年齡
      構造方法:無參,帶參
      成員方法:get/set方法,看門()
      ③共性:
      成員變量:姓名,年齡;
      構造方法:無參,帶參;
      成員方法:get/set方法

      步驟:
      1、定義動物類(Animal) 【成員變量:姓名,年齡】【 構造方法:無參,帶參】【成員方法:get/set方法】
      2、定義貓類(Cat),繼承動物類 【構造方法:無參,帶參】【成員方法:抓老鼠() 】
      3、定義狗類(Dog),繼承動物類 }
      【構造方法:無參,帶參】【成員方法:看門() 】
      4、定義測試類(AnimalDemo),寫代碼測試

    示例代碼:

    public class Animal {private String name;private int age;public Animal() {}public Animal(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} }public class Cat extends Animal{public Cat() {}public Cat(String name, int age) {super(name, age);}public void catchMouse(){System.out.println("抓老鼠");} }public class Dog extends Animal{public Dog() {}public Dog(String name, int age) {super(name, age);}public void lookdoor(){System.out.println("看門");} }public class demo {public static void main(String[] args) {Cat c1 = new Cat();c1.setName("加菲貓");c1.setAge(2);System.out.println(c1.getName()+","+c1.getAge());c1.catchMouse();Cat c2 = new Cat("橘貓",2);System.out.println(c2.getName()+","+c2.getAge());c2.catchMouse();} }

    4. 修飾符

    4.1 package

    • 1、包的概念
      包就是文件夾,用來管理類文件的
    • 2、包的定義格式
      package 包名; (多級包用.分開)
      例如:package com.heima.demo;
    • 3、帶包編譯&帶包運行 帶包編譯:
      · javac –d . 類名.java
      例如:javac -d . com.heima.demo.HelloWorld.java
      帶包運行:
      · java 包名+類名
      例如:java com.heima.demo.HelloWorld

    4.2 import

    導包的意義
    使用不同包下的類時,使用的時候要寫類的全路徑,寫起來太麻煩了
    為了簡化帶包的操作,Java就提供了導包的功能
    導包的格式
    格式:import 包名;
    范例:import java.util.Scanner;

    示例代碼

    public class demo {public static void main(String[] args) {java.util.Scanner sc = new java.util.Scanner(System.in);} }import java.util.Scanner;public class demo {public static void main(String[] args) {Scanner sc = new (System.in);} }

    4.3 權限修飾符

    4.4 final

    • fianl關鍵字的作用
      final代表最終的意思,可以修飾成員方法,成員變量,類
    • final修飾類、方法、變量的效果
      fianl修飾類:該類不能被繼承(不能有子類,但是可以有父類)
      final修飾方法:該方法不能被重寫
      final修飾變量:表明該變量是一個常量,不能再次賦值

    4.5 final修飾局部變量

    • fianl修飾基本數據類型變量
      final 修飾指的是基本類型的數據值不能發生改變
    • final修飾引用數據類型變量
      final 修飾指的是引用類型的地址值不能發生改變,但是地址里面的內容是可以發生改變的
      舉例:
    public class demo {public static void main(String[] args) {final Student s = new Student(23);//s = new Student(23);s.setAge(23);} }

    4.6 static

    • static的概念
      static關鍵字是靜態的意思,可以修飾【成員方法】,【成員變量】
    • static修飾的特點
  • 被類的所有對象共享,這也是我們判斷是否使用靜態關鍵字的條件
  • 可以通過類名調用,當然也可以通過對象名調用【推薦使用類名調用】
  • 示例代碼:

    public class Student {public String name;public int age;public static String university;public Student() {}public void show() {System.out.println(name + "," + age);} }public class demo {public static void main(String[] args) {Student.university = "shu";Student s1 = new Student();s1.name = "林青霞";s1.age = 30;s1.show();} }

    4.7 static訪問特點

    • static的訪問特點
      非靜態的成員方法
      能訪問靜態的成員變量
      能訪問非靜態的成員變量
      能訪問靜態的成員方法
      能訪問非靜態的成員方法
    • 靜態的成員方法
      能訪問靜態的成員變量
      能訪問靜態的成員方法
    • 總結成一句話就是: 靜態成員方法只能訪問靜態成員

    總結

    以上是生活随笔為你收集整理的Java基础day10的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。