自学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("没有找到该电影!");}
}