首页 > 编程语言 >Java学习第七天--面向对象

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

时间:2024-09-30 21:20:41浏览次数:6  
标签:Java String 构造方法 -- Movie System return public 第七天

目录

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();
    }
}

标签:Java,String,构造方法,--,Movie,System,return,public,第七天
From: https://blog.csdn.net/Y_Y1230704/article/details/142632409

相关文章

  • YOLOv8改进 | 主干篇,YOLOv8改进主干网络为华为的轻量化架构GhostNetV1
    摘要摘要:将卷积神经网络(CNN)部署在嵌入式设备上是困难的,因为嵌入式设备的内存和计算资源有限。特征图的冗余是成功的CNN的一个重要特征,但在神经网络架构设计中很少被研究。作者提出了一种新颖的Ghost模块,用于通过廉价操作生成更多的特征图。基于一组内在特征图,我们......
  • Chromium 屏蔽缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。c++
    新编译的Chromium工程默认gn参数如下:可以利用gnargs--listout/debug>1.txt导出默认参数google_api_key  Currentvalue(fromthedefault)=""   From//google_apis/BUILD.gn:43  SetthesetobakethespecifiedAPIkeysandOAuthclient ......
  • C--联合和枚举
    欢迎各位看官!如果您觉得这篇文章对您有帮助的话欢迎您分享给更多人哦感谢大家的点赞收藏评论感谢各位看官的支持!!!一:联合体1.1:联合体类型的声明首先:像结构体一样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的......
  • AMD Instinct™ MI200 GPU内存空间概述
    AMDInstinct™MI200GPUmemoryspaceoverview—ROCmBlogs注意: 本博客之前是AMD实验室笔记博客系列的一部分。HIPAPI支持在加速系统上为主机和设备内存提供多种分配方式。在本文中,我们将:1.介绍一组常用的内存空间2.识别每种内存空间的独特之处3.讨论......
  • c#代码介绍23种设计模式_12亨元模式
    目录1、享元模式的实现精髓2、享元模式的正式定义3、亨元模式实现4、涉及的角色如下几种角色5、享元模式的优缺点6、使用场景7、实现思路在软件开发过程,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次地去申请内......
  • c#代码介绍23种设计模式_13代理模式
    目录1、代理模式的详细介绍2、代理模式定义3、代理模式实现4、代理模式所涉及的角色5、代理模式的优缺点6、实现思路在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可......
  • 程序地址空间
    文章目录程序地址空间进程地址空间关于页表早期内存的分配方式程序地址空间计算机得物理内存大小是固定的,就是计算机主板内存槽上的实际物理空间,CPU可以直接继续寻址,物理内存的容量是固定的,但是寻址的卡空间取决于CPU地址线的数量。32位系统上,线性地址空间可达4G,那......
  • KMP算法
    引言之前在打ACM竞赛时就学过一些字符串相关的算法,其中就包括KMP。但是面向竞赛的KMP算法和面向408的KMP算法在一些概念和实现细节上有细微差异,所以特意写了这篇文章对408中的KMP算法做出总结字符串的前缀、后缀和部分匹配指前缀指除了最后一个字符以外,字符串的所有头部子串;后......
  • P10280 Cowreography G
    P10280CowreographyG贪心本题的证明中涵盖了多种证明方法:分类讨论,交换两个,整体策略,堪称贪心证明之典范符号约定令\(s_x\)表示最初字符串的不同\(1\)位置,\(t_x\)表示最终字符串的不同\(1\)位置Theorem1:交换\(a_i,a_j(i>j,a_i\nea_j)\)的最优步数为\(\lceil\fr......
  • P1939 矩阵加速
    P1939矩阵加速已知一个数列\(a\),它满足:\[a_x=\begin{cases}1&x\in\{1,2,3\}\\a_{x-1}+a_{x-3}&x\geq4\end{cases}\]求\(a\)数列的第\(n\)项对\(10^9+7\)取余的值。对于\(100\%\)的数据\(1\leqT\leq100\),\(1\leqn\leq2\times......