• 07 面向对象


    面向对象
    区别:
    面向过程:事物比较简单,可以用线性的思维去解决
    面向对象:事物比较复杂,使用简单的线性思维无法解决
    共同点:
    面向过程和面向对象都是解决实际问题的一种思维方式
    二者相辅相成,通过面向对象方式方便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统,具体到微观操作,仍然使用面向过程方式来处理。
    
    类可以生成对象 类是对象的抽象
    对象:是具体的事物
    类:是对对象的抽象(抽象 抽出像的部分)
    先有具体对象,然后抽象各个对象象的部分,归纳出类通过类在认识其他对象
    
    1、静态的描述声明为类的成员变量 成员变量描述对象有什么
    2、动态的描述声明为成员方法 成员方法描述对象可以做什么
    3、成员方法可以直接使用成员变量
    package lei;
    
    public class Person {
        //静态的特征描述为类的成员变量 成员变量描述对象有什么
        //在这里声明类的成员变量
        //类的里面 方法的外面
        String name;
        int age;
        String gender;
        
        //动态的特征描述为类的成员方法 成员方法描述对象可以做什么
        public void eat() {
            //成员方法可以直接使用成员变量
            System.out.println(name + "在吃饭");
            
        }
        public void sleep() {
            System.out.print(name + "在睡觉");
            
        }public void coding() {
            System.out.print(name + "在敲代码");
        }
    
    }
    
    
    类:class
    对象:object instance(实例)某个类的对象 <==> 某个类的实例
    
    定义类(类的组成)
    属性 field
    方法 method
    构造方法 construtor
    其他:代码块 静态代码块 内部类
    
    类的属性:
    在定义成员变量时可以对其初始化
    如果不对其初始化,Java使用默认的值对其初始化。
    
    
    创建对象
    类名 对象名 = new 类名();
    Person p1=new Person(); 
    
    调用类的属性和方法
    对象名.成员变量
    对象名.成员方法
    
    属性   field,或者叫成员变量
    属性用于定义该类或该类对象包含的数据或者说静态属性。
    属性作用范围是整个类体
    属性定义格式:
    内存分析
    
    
    形参和实参
    定义方法的参数是形式参数
    调用方法的参数是实在参数
    调用方法时要求参数个数相同,类型兼容
    
    参数传递
    基本数据类型的参数传递
    引用数据类型的参数传递
    
    类和类之间的通信
    通过创建对象,类和类就建立了联系,通过方法的调用来进行信息的传递
    
    this: 是一个关键字,代表当前对象的引用,就是那个对象执行到了这一行代码,那个对象就是当前对象
    调用属性 : 当局部变量和成员变量重名的时候,使用this,解决重名问题,不重名可以省略
    调用方法
    调用构造方法
            this();
            this(“旺财”,100)
    package movie02;
    /**
     * 自定义的数据类型
     * 用来存储数据
     * @author tang
     *
     */
    public class Movie {
        String movieName;
        String movieDrt;
        String movieMain;
        int movieTime;
        
    
    }
    
    
    package movie02;
    
    public class Test {
        public static void main(String[] args) {
            MovieManager manager = new MovieManager();
            manager.shouMainMenu();
        }
    }
    
    
    
    package movie02;
    
    import java.util.Scanner;
    
    public class MovieManager {
        // 创建一个数组,用来存放电影的对象
        Movie[] ms = new Movie[10];
    //    {1,1,1,1,1,0,0}
        // 创建一个输入的对象 用来输入内容
        Scanner input = new Scanner(System.in);
    
        // 主菜单的界面
        public void shouMainMenu() {
            System.out.println("欢迎光临横店影视城");
            System.out.println("------------------------");
            System.out.println("1,新增电影");
            System.out.println("2,查看电影");
            System.out.println("3,删除电影");
            System.out.println("4,退出");
            System.out.println("------------------------");
            int flg = input.nextInt();
            switch (flg) {
            case 1:
                add();
                backMainMenu();
                break;
            case 2:
                select();
                backMainMenu();
                break;
            case 3:
                delete();
                backMainMenu();
                break;
            default:
                
                break;
            }
    
        }
        
        
    //    返回主菜單
        public void backMainMenu() {
            System.out.println("请输入0返回主菜单");
            int flg = input.nextInt();
            if (flg == 0) {
                shouMainMenu();
            }else{
                backMainMenu();
            }
                
        }
    
        public void add() {
            //用户输入电影的信息
            System.out.println("新增電影");
            System.out.println("请输入电影的名字");
            String name = input.next();
            System.out.println("请输入电影的导演");
            String drt = input.next();
            System.out.println("请输入电影主演的名字");
            String main = input.next();
            System.out.println("请输入电影的时长");
            int time = input.nextInt();
            
            //创建一个电影的对象  来保存用户输入的电影的属性
            Movie m = new Movie();
            m.movieName = name;
            m.movieMain = main;
            m.movieDrt = drt;
            m.movieTime = time;
            
            //查找数组中第一个为空的位置,该位置就是当前电影对象应该添加的位置
            int index = 0;
            for (int i = 0; i < ms.length; i++) {
                if (ms[i] == null) {
                    index = i;
                    break;
                }
            }
            
            ms[index] = m;
            
            
            
        }
    
        //查看电影
        public void select() {
            System.out.println("查看電影");
            System.out.println("电影名	导演	主演	时长");
            for (int i = 0; i < ms.length; i++) {
                Movie m = ms[i];
                if (m == null) {
                    //一旦m == null  说明没有电影的对象了  遍历就结束
                    break;
                }
    //            打印电影的信息
                System.out.println(m.movieName+"	"+m.movieDrt+"	"+m.movieMain+"	"+m.movieTime);
            }
    
        }
    
        public void delete() {
            System.out.println("请输入电影的名字");
            String name = input.next();
    //        [1][4][5][6][][]
            //记录所要删除的元素的下标
            int index = -1;
            for (int i = 0; i < ms.length; i++) {
                Movie m = ms[i];
                //如果输入的名字和该电影的名字相同,则找到了索要删除的电影的对象
                //记录下标  结束循环
                if (name.equals(m.movieName)) {
                    index = i;
                    break;
                }
            }
            if (index >= 0) {
                for (int i = index; i < ms.length-1; i++) {
                    ms[i] = ms[i+1];
                }
                ms[ms.length-1] = null;
            }
        }
    
    }
  • 相关阅读:
    170322操作系统定义、功能、位置与历史
    java 多线程
    java 网络编程TCP程序设计
    java 事件处理机制
    java GUI编程
    170321php3第4章 PHP5的基本语法+作业九九乘法表
    170320网络编程 udpclient udpGroupClient
    二叉树线索化
    哈希表
    二叉搜索树
  • 原文地址:https://www.cnblogs.com/meizhoulqp/p/11256745.html
Copyright © 2020-2023  润新知