目录
- 1、类和对象
- 1.1 类的介绍
- 1.2 类和对象的关系
- 1.3 类的组成
- 2、对象内存图
- 2.1 单个对象内存图
- 2.2 两个对象内存图
- 2.3 两个引用指向相同内存图
- 3、成员变量和局部变量
- 3.1 成员变量和局部变量的区别
- 4、this关键字
- 4.1 this可以解决的问题
- 4.2 this介绍
- 4.3 this内存图
- 4.4 this总结
- 5、构造方法
- 5.1 构造方法概述
- 5.2 构造方法的作用
- 5.3 构造方法的注意事项
- 5. 4 构造方法的执行流程
- 6、封装
- 6.1 面向对象三大特征
- 6.2 封装的设计规范
- 6.3 权限修饰符
- 7、标准JavaBean
- 8、综合案例
1、类和对象
1.1 类的介绍
1.2 类和对象的关系
1.3 类的组成
2、对象内存图
2.1 单个对象内存图
注意点:一段代码要开始运行时,先将源文件编译成字节码文件,然后主方法对应的字节码文件进入方法区,接着主方法进入栈内存,当需要创建新的对象时,也就是new对象时,就会在堆内存中开辟此对象对应的空间。
面试时,需要能回答上这三个内存区域的用法。
2.2 两个对象内存图
2.3 两个引用指向相同内存图
3、成员变量和局部变量
3.1 成员变量和局部变量的区别
4、this关键字
4.1 this可以解决的问题
局部变量和成员变量重名了,但是还要用成员变量,那么就可以使用this关键字了。
this的作用:可以调用本类的成员(变量和方法)。
4.2 this介绍
也就是说:谁来调用我,我就代表谁。
4.3 this内存图
4.4 this总结
5、构造方法
5.1 构造方法概述
5.2 构造方法的作用
package com.itheima.oop;public class Student {String name;int age;public Student(){System.out.println("我是无参构造方法!!!");}public Student(String name, int age){this.name = name;this.age = age;System.out.println("我是有参构造方法!!!");}
}package com.itheima.test;
import com.itheima.oop.Student;public class StudentTest {public static void main(String[] args) {Student s1 = new Student();//不传参数,则创建时调用无参构造Student s2 = new Student("马四", 16);//传参数,则创建时调用有参构造}
}输出:
我是无参构造方法!!!
我是有参构造方法!!!
5.3 构造方法的注意事项
5. 4 构造方法的执行流程
6、封装
6.1 面向对象三大特征
继承和多态放后面面向对象高级课程学习。今天只学习封装。
-
案例一:
-
案例二:
6.2 封装的设计规范
注:隐藏和暴露都是针对要使用对象的使用者而言。那如何隐藏,如何暴露呢?看下面权限修饰符知识。
6.3 权限修饰符
使用set方法和get方法,合理隐藏、合理暴露:
7、标准JavaBean
JavaBean是指:实体类,即封装数据的类。
8、综合案例
代码:
- Main.java
package com.itheima.movieSystem.domain;public class Main {public static void main(String[] args) {System.out.println("==============电影信息系统==============");//1、登录验证Login login = new Login();login.login();//2、菜单选择SelectMovieInfoHandler selectMovieInfoHandler = new SelectMovieInfoHandler();selectMovieInfoHandler.menu();}
}
- SelectMovieInfoHandler.java
package com.itheima.movieSystem.domain;
import com.itheima.movieSystem.vo.Movie;
import java.util.Scanner;public class SelectMovieInfoHandler {public void menu() {//加载数据库Movie[] data = getData();loop:while (true) {Scanner sc = new Scanner(System.in);System.out.println("1.查询全部电影信息");System.out.println("2.根据id查询电影信息");System.out.println("3.退出");int choose = sc.nextInt();switch (choose) {case 1:queryAllMovie(data);break ;case 2:queryMovieById(data);break ;case 3:System.out.println("欢迎下次观看!");break loop;default:System.out.println("没有此选项!");break ;}}}public Movie[] queryAllMovie(Movie[] data){System.out.println("全部电影如下:");for (Movie datum : data) {System.out.println(datum.toString());}return data;}public Movie queryMovieById(Movie[] data){System.out.println("请输入要查询电影的id:");Scanner sc = new Scanner(System.in);int id = sc.nextInt();for (Movie datum : data) {if (datum.getId() == id) {System.out.println(datum.toString());return datum;}}return null;}public Movie[] getData(){Movie[] arr = new Movie[2];Movie movie1 = new Movie();movie1.setId(1);movie1.setName("大力王");movie1.setScore(91);arr[0] = movie1;Movie movie2 = new Movie();movie2.setId(2);movie2.setName("魔法大师");movie2.setScore(95);arr[1] = movie2;return arr;}
}
- Login.java
package com.itheima.movieSystem.domain;
import java.util.Random;
import java.util.Scanner;public class Login {//获取验证码public String getVerificationCode() {//初始化验证码词典库char[] arr = getContents();//生成随机验证码Random r = new Random();
// char[] verificationCodeArr = new char[5];StringBuilder verificationCodeArr = new StringBuilder();for (int i = 0; i < 5; i++) {verificationCodeArr.append(arr[r.nextInt(arr.length)]);}return verificationCodeArr.toString();}private char[] getContents() {//初始化验证码词典库char[] arr = new char[62];for (int i = 0; i < arr.length; i++) {if (i < 26){arr[i] = (char)('a' + i);}else if (i <52){arr[i] = (char)('A' + i - 26);}else {arr[i] = (char)('0' + i - 52);}
// System.out.print(arr[i] + " ");}return arr;}public void login(){while (true){Login login = new Login();String verificationCode = login.getVerificationCode();System.out.println("系统生成的验证码:" + verificationCode);System.out.println("请输入验证码:");Scanner sc = new Scanner(System.in);String printVerificationCode = sc.next();if (check(verificationCode, printVerificationCode)){System.out.println("登录成功,欢迎来到电影信息系统!");break;}else {System.out.println("输入的验证码错误,请重新输入!");}}}public boolean check(String verificationCode, String printVerificationCode){return verificationCode.equals(printVerificationCode);}
}
- Movie.java
package com.itheima.movieSystem.vo;public class Movie {private String name;//电影名称private double score;//电影评分private int id;//电影idpublic Movie() {}public Movie(String name, double score, int id) {this.name = name;this.score = score;this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "电影:{" +"名称='" + name + '\'' +", 得分=" + score +'}';}
}