自學Java-面向對象編程入門
- 一、靜態方法的注意事項
- 二、簡易版電影信息展示系統
- 1、測試類
- 2、電影類
- 3、電影操作類
一、靜態方法的注意事項
1、靜態方法中可以直接訪問靜態成員,不可以直接訪問實例成員
2、實例方法中既可以直接訪問靜態成員,也可以直接訪問實例成員
3、實例方法中可以出現this關鍵字,靜態方法中不可以出現this關鍵字的
package com.itheima.staticmethod;public class Test4 {// 靜態變量public static int count = 100;public static void printHelloWorld2(){System.out.println("HelloWorld!");}// 實例變量:屬于對象的。private String name;// 實例方法public void run(){}public static void main(String[] args) {// 目標:搞清楚靜態方法,實例方法訪問的幾點注意事項。printHelloWorld();}// 1、靜態方法中可以直接訪問靜態成員,不可以直接訪問實例成員。public static void printHelloWorld(){System.out.println(count);printHelloWorld2();// System.out.println(name); // 報錯// run(); // 報錯// System.out.println(this); // 報錯,this代表的只能是對象。}// 2、實例方法中既可以直接訪問靜態成員,也可以直接訪問實例成員。public void go(){System.out.println(count);printHelloWorld2();System.out.println(name);run();}// 3、實例方法中可以出現this關鍵字,靜態方法中不可以出現this關鍵字。public void eat(){System.out.println(this);}
}
二、簡易版電影信息展示系統
需求:
1、展示系統中的全部電影信息(每部電影展示:名稱、價格)
2、允許用戶根據電影編號(id)查詢出某個電影的詳情信息
目標:
使用所學的面向對象編程實現以上2個需求
1、測試類
package com.itheima.demo;public class Test {public static void main(String[] args) {// 目標:完成面向對象的綜合小案例// 1、設計電影類Movie,以便創建電影對象,封裝電影數據// 2、封裝系統中的全部電影數據。(自己造一些數據)Movie[] movies = new Movie[6];movies[0] = new Movie(1, "《星際穿越》", 9.6, "安妮·海瑟薇");movies[1] = new Movie(2, "《速度與激情7》", 9.2, "博納爾·羅伯森");movies[2] = new Movie(3, "《Transformers:天際線》", 9.1, "吉姆·羅恩");movies[3] = new Movie(4, "《速度與激情8》", 9.1, "博納爾·羅伯森");movies[4] = new Movie(5, "《速度與激情9》", 9.1, "博納爾·羅伯森");movies[5] = new Movie(6, "《速度與激情10》", 9.1, "博納爾·羅伯森");// 3、創建電影操作對象出來,專門負責電影數據的業務操作MovieOperator mo = new MovieOperator(movies);mo.printAllMovies(); // ALT + 回車mo.searchMovieById();}
}
2、電影類
package com.itheima.demo;public class Movie {private int id; // 編號private String name;private double price;private String actor;// 定義一個無參數構造器public Movie() {}// 定義一個有參數構造器public Movie(int id, String name, double price, String actor) {this.id = id;this.name = name;this.price = price;this.actor = actor;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}
}
3、電影操作類
package com.itheima.demo;import java.util.Scanner;// 電影操作類
public class MovieOperator {private Movie[] movies; // 記住一個電影對象的數組public MovieOperator(Movie[] movies) {this.movies = movies;}// 打印全部電影信息public void printAllMovies() {System.out.println("編號\t電影名\t價格\t主演");for (int i = 0; i < movies.length; i++) {Movie m = this.movies[i];System.out.println(m.getId() + "\t" + m.getName() + "\t" + m.getPrice() + "\t" + m.getActor() + "\t");}}// 根據id查詢電影public void searchMovieById() {System.out.println("請輸入要查詢的電影編號:");Scanner sc = new Scanner(System.in);int id = sc.nextInt();// 遍歷每個電影對象for (int i = 0; i < movies.length; i++) {// 拿到當前遍歷的電影對象Movie m = this.movies[i];// 判斷當前電影對象的id是否是我們正在找的電影id,是則打印出該電影并立即結束方法。if (m.getId() == id) {System.out.println(m.getId() + "\t" + m.getName() + "\t" + m.getPrice() + "\t" + m.getActor() + "\t");return;}}System.out.println("沒有找到該電影!");}
}