Java学习第七天--面向对象

目录

1.学什么

 2.类

2.1类的组成

2.2类与对象的关系

3.对象内存图 

4.成员变量和局部变量

5.this关键字

6.构造方法

6.1构造器

6.2格式:

6.3执行时机:

6.4构造方法作用

6.5构造方法注意事项

6.5.1构造方法的创建

6.5.2构造方法的重载

6.5.3推荐的使用方式

7.封装

7.1合理隐藏,合理暴露

​编辑7.2权限修饰符​编辑

8.综合案例

8.1数据类Movie

8.2业务类MovieService

8.3测试类 Test

1.学什么

  • 学习自己如何设计对象
  • 学习已有的对象如何使用

 2.

2.1类的组成

  1. 类:一组相关属性和行为的集合,将其看作是对象的设计图
  2. 对象:是根据设计图(类),创建出来的实体
  3. n.属性(成员变量):跟之前定义变量的格式一样,只不过位置需要放在方法的外面
  4. v.行为(成员方法):跟之前定义方法的格式一样,只不过需要去掉static关键字

2.2类与对象的关系

  1. 依赖关系:需要根据类,创建对象
  2. 数量关系:根据一个类,可以创建出多个对象

3.对象内存图 

4.成员变量和局部变量

5.this关键字

6.构造方法

6.1构造器

  • 初始化一个新建的对象
  • 构造、创建对象的时候,所调用的方法

6.2格式:

  1. 方法名与类名相同,大小写也要一致
  2. 没有返回值类型,连void都没有
  3. 没有具体的返回值(不能由return带回结果数据)

6.3执行时机:

  1. 创建对象的时候调用,每创建一次对象,就会执行一次构造方法
  2. 不能手动调用构造方法

 

6.4构造方法作用

  • 本质作用:创建对象 结合构造方法
  • 执行时机:给对象中的属性(成员变量)进行初始化

6.5构造方法注意事项

6.5.1构造方法的创建

  • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法

6.5.2构造方法的重载

  • 构造方法也是方法,允许重载关系出现

6.5.3推荐的使用方式

  • 无参数构造方法,和带参数构造方法,都自己手动给出

7.封装

7.1合理隐藏,合理暴露

7.2权限修饰符

8.综合案例

需求:
        1. 展示系统中的全部电影(每部电影展示:名称、评分)。
        2. 允许用户根据电影编号(id)查询出某个电影的详细信息

8.1数据类Movie

package com.domain;
public class Movie {
    private int id;
    private String title;
    private String time;
    private double score;
    private String area;
    private String type;
    private String director;
    private String starring;
    public Movie() {
    }
    public Movie(int id, String title, String time, double score, String area, String type, String director, String starring) {
        this.id = id;
        this.title = title;
        this.time = time;
        this.score = score;
        this.area = area;
        this.type = type;
        this.director = director;
        this.starring = starring;
    }
    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }
    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }
    /**
     * 获取
     * @return title
     */
    public String getTitle() {
        return title;
    }
    /**
     * 设置
     * @param title
     */
    public void setTitle(String title) {
        this.title = title;
    }
    /**
     * 获取
     * @return time
     */
    public String getTime() {
        return time;
    }
    /**
     * 设置
     * @param time
     */
    public void setTime(String time) {
        this.time = time;
    }
    /**
     * 获取
     * @return score
     */
    public double getScore() {
        return score;
    }
    /**
     * 设置
     * @param score
     */
    public void setScore(double score) {
        this.score = score;
    }
    /**
     * 获取
     * @return area
     */
    public String getArea() {
        return area;
    }
    /**
     * 设置
     * @param area
     */
    public void setArea(String area) {
        this.area = area;
    }
    /**
     * 获取
     * @return type
     */
    public String getType() {
        return type;
    }
    /**
     * 设置
     * @param type
     */
    public void setType(String type) {
        this.type = type;
    }
    /**
     * 获取
     * @return director
     */
    public String getDirector() {
        return director;
    }
    /**
     * 设置
     * @param director
     */
    public void setDirector(String director) {
        this.director = director;
    }
    /**
     * 获取
     * @return starring
     */
    public String getStarring() {
        return starring;
    }
    /**
     * 设置
     * @param starring
     */
    public void setStarring(String starring) {
        this.starring = starring;
    }
}

8.2业务类MovieService

package com.test;
import com.domain.Movie;
import java.util.Scanner;
public class MovieService {
    private Movie[] movies;
    private Scanner sc = new Scanner(System.in);
    public MovieService(Movie[] movies) {
        this.movies=movies;
    }
    /** 启动电影信息管理系统 */
    public void start(){
        lo:
        while (true) {
            System.out.println("----------电影信息系统----------");
            System.out.println("请输入您的选择:");
            System.out.println("1. 查询全部电影信息");
            System.out.println("2. 根据id查询电影信息");
            System.out.println("3. 退出");
            int choice = sc.nextInt();
            switch (choice){
                case 1:
                    queryMovieInfo();
                    //System.out.println("查询全部电影信息");
                    break;
                case 2:
                    queryMovieInfoById();
                    //System.out.println("根据id查询电影信息");
                    break;
                case 3:
                    System.out.println("感谢您的使用,再见!");
                    break lo;
                default:
                    System.out.println("您的输入有误,请检查");
                    break;
            }
        }
    }
    /** 此方法根据电影编号,查询电影详细信息*/
    private void queryMovieInfoById() {
        System.out.println("请输入您要查询的电影编号:");
        int id = sc.nextInt();
        for (int i = 0; i < movies.length; i++) {
            Movie movie = movies[i];
            if (movie.getId()==id){
                System.out.println(movie.getId()+"----"+movie.getTitle()+"----"+movie.getTime()
                        +"----"+movie.getScore()+"----"+movie.getArea()+"----"+movie.getType()
                        +"----"+movie.getDirector()+"----"+movie.getStarring());
                return;
            }
        }
        System.out.println("您输入的编号不存在,请检查!");
    }
    /**展示系统中全部的电影(名称,评分)*/
    private void queryMovieInfo() {
        for (int i = 0; i < movies.length; i++) {
            Movie movie = movies[i];
            System.out.println(movie.getTitle()+"---"+movie.getScore());
        }
    }

}

8.3测试类 Test

package com.test;
import com.domain.Movie;
public class Test {
    public static void main(String[] args) {
        Movie movie1=new Movie(1,"东八区的先生们","2022",2.1,"中国大陆","剧情 喜剧","夏睿","张翰 王晓晨");
        Movie movie2 = new Movie(2, "上海堡垒", "2019", 2.9, "中国大陆", "爱情 战争 科幻", "滕华涛", "鹿晗 舒淇");
        Movie movie3 = new Movie(3, "纯洁心灵·逐梦演艺圈", "2015", 2.2, "中国大陆", "剧情 喜剧", "毕志飞", "朱一文 李彦漫");
        Movie [] movies = {movie1,movie2,movie3};
        for (int i = 0; i < movies.length; i++) {
            System.out.println(movies[i]);
        }
        MovieService movieService=new MovieService(movies);
        movieService.start();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值