面向对象 区别: 面向过程:事物比较简单,可以用线性的思维去解决 面向对象:事物比较复杂,使用简单的线性思维无法解决 共同点: 面向过程和面向对象都是解决实际问题的一种思维方式 二者相辅相成,通过面向对象方式方便于我们从宏观上把握事物之间复杂的关系,方便我们分析整个系统,具体到微观操作,仍然使用面向过程方式来处理。 类可以生成对象 类是对象的抽象 对象:是具体的事物 类:是对对象的抽象(抽象 抽出像的部分) 先有具体对象,然后抽象各个对象象的部分,归纳出类通过类在认识其他对象 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("电影名\t导演\t主演\t时长"); for (int i = 0; i < ms.length; i++) { Movie m = ms[i]; if (m == null) { //一旦m == null 说明没有电影的对象了 遍历就结束 break; } // 打印电影的信息 System.out.println(m.movieName+"\t"+m.movieDrt+"\t"+m.movieMain+"\t"+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; } } }
原文:https://www.cnblogs.com/meizhoulqp/p/11256745.html