**##**入门彻底搞懂对象
1.面向对象好处是因为“凡是找对象的编程套路更加符合人类的思维习惯,编程也会更直观”。
2.对象是一种特殊的数据结构。对象是用类new出来的,有了类就可以创建出对象。
public ciass 类名{
1.变量,用来说明对象可以处理什么数据
2.方法;用来描述对象有什么功能,也就是可以对数据进行什么样的处理
--------
}
##对象执行原理,类与对象注意事项
1.对象在计算机中的执行原理
Student s1=new Student();
每次new Student(),就是在堆内存中开辟一块内存区域代表一个学生对象。
s1变量里记住的是学生对象的地址。s1也被称为引用类型的变量。
2.类与对象的注意事项
####1.类名建议用英文单词,注意满足驼峰模式,而且要有意义
2.类中定义的变量也被称为成员变量(对象的属性),类中定义的方法也被称为成员方法(对象的行为)。
3.成员本身存在默认值,定义成员变量是一般不设初始值(没有意义)。
4.一个代码中可以写多个class类,但只能用一个public来修饰且public的修饰名必须成为代码文件名。
5.对象和对象之间的数据不会相互影响,但多个变量同时指向一个变量就会影响。
6.如果某个对象没有被一个变量引用,则该对象无法被操作了,该对象会成为所谓的垃圾对象。
##this关键字
this的应用场景主要是用来解决变量名称冲突问题的。
public class Student{
double score;
public void printlnThis(){
System.out.printin(this);
}
public void printpass(double score){
if(this.score>score){
System.out.println(“恭喜您被录取了”);
}else{
System.out.println("落选了");
}
}
}
this就是一个变量,可以用在方法中,用来拿到当前对象;那个对象调用方法,this就指向那个对象。
##构造器
1.构造器分为无参构造器和有参构造器
构造器摸样
public class Student {
public Student(){
}
}
public Student(String name,double score){
}
切记构造器不能写返回值类型
创建对象时,对象会去调用构造器。
构造器的常见应用场景就是创建对象时完成对成员变量的初始化赋值。
#构造器的注意事项
1.类在设计时,如果不写构造器,java会自动为类生成一个无参构造器的。
2.一旦定义了有参构造器,java不会帮我们的类生成无参构造器了,需要我们自己手写一个无参构造器出来。
##面向对象的三大特征
1.封装
封装就是用类设计对象处理一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。
封装的设计规范
合理隐藏,合理暴露
暴露需要使用public,隐藏要用到private。
实体类是什么?
就是一种特殊形式的类。
1.这个类中的成员变量都要私有,并且要对外提供相应的get方法和set方法。
2.类中必须要有一个公共的无参的构造器。
实体类只负责数据的存储,而对数据的处理交给其他类来完成,以实现数据和数据业务的业务处理相分离。
实体类实例之模拟电影信息系统。
package Demo;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//设计一个电影类
//设计一个电影的操作类
Move[]moves=new Move[4];
Move m1=new Move(1,"水门桥",38.9,9.8,"徐克","吴京","12万人想看");
Move m2=new Move(2,"出拳吧",39,7.8,"唐晓白","田雨","3.5万人想看");
Move m3=new Move(3,"月球陨落",42,7.9,"罗兰","贝瑞","17.9万人想看");
Move m4=new Move(4,"一点就到家",38.9,9.8,"徐宏宇","刘昊然","10.6万人想看");
moves[0]=m1;
moves[1]=m2;
moves[2]=m3;
moves[3]=m4;
MovieOperator operator=new MovieOperator(moves);
Scanner sc=new Scanner(System.in);
while (true) {
System.out.println("电影信息系统");
System.out.println("1.查询全部电影信息");
System.out.println("2.根据id查询某个电影信息");
System.out.println("请您输入操作命令:");
int command=sc.nextInt();
switch (command){
case 1:
operator.printAllMovies();
break;
case 2:
System.out.println("请您输入查询id");
int id=sc.nextInt();
operator.searchMovieById(id);
break;
default:
System.out.println("您输入的命令有问题");
}
}
}
}
package Demo;
public class MovieOperator {
private Move[] moves;
public MovieOperator(Move[] moves) {
this.moves = moves;
}
public void printAllMovies() {
System.out.println("全部电影信息如下");
for (int i = 0; i < moves.length; i++) {
Move m = moves[i];
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("-------------------------");
}
}
public void searchMovieById(int id) {
for (int i = 0; i < moves.length; i++) {
Move m = moves[i];
if (m.getId() == id) {
System.out.println("电影详情");
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("导演:" + m.getDirector());
System.out.println("得分:" + m.getScore());
System.out.println("主演:" + m.getActor());
System.out.println("其他信息:" + m.getInfo());
return;
}
}
System.out.println("没有电影信息");
}
}
package Demo;
public class Move {
private int id;
private String name;
private double price;
private double score;
private String director;
private String actor;
private String info;
public Move() {
}
public Move(int id, String name, double price, double score, String director, String actor, String info) {
this.id = id;
this.name = name;
this.price = price;
this.score = score;
this.director = director;
this.actor = actor;
this.info = info;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
2.继承
3.多态
下期API总结。