wordpress设置固定链接,win7优化大师下载,施工企业资质包括哪些,wordpress 127.0.0.1面向对象是java编程的套路。更符合人类思维习惯#xff0c;编程更直观。面向对象有三大特征#xff1a;封装#xff0c;继承#xff0c;多态。
目录
1.理解面向对象
2.对象在计算机中的执行原理
3.类和对象的一些注意事项 4.类与对象的一些语法知识
#xff08;1编程更直观。面向对象有三大特征封装继承多态。
目录
1.理解面向对象
2.对象在计算机中的执行原理
3.类和对象的一些注意事项 4.类与对象的一些语法知识
1this关键字
2构造器
3封装
4实体javaBean 实体类
5.面向对象编程的综合案例 1.理解面向对象
开发一个一个的对象把数据交给对象再调用对象的方法来完成对数据的处理。
*1.*类Class类是创建对象的模板或蓝图。它定义了对象的属性和方法。属性是对象的特征如学生的姓名成绩而方法是对象可以执行的操作如计算总分和平均成绩。
2. 对象Object对象是类的实例。通过类我们可以创建多个具有相同属性和方法的对象但每个对象可以有不同的属性值。
下面是举一个学生的类(模板)以及测试Text中创建好的对象。
import java.net.SocketOption;public class Student { //这是我们创建好的一个类String name; //这是类的属性double Chinese;double Math;//这是类的方法public void printfTotalScore(){System.out.println(name的总成绩(ChineseMath));}public void printfAverageScore(){System.out.println(name的平均成绩((ChineseMath)/2.0));}
}
public class Text1 {public static void main(String[] args) {Student s1 new Student();s1.name 楠楠;s1.Chinese 100;s1.Math 100;s1.printfTotalScore();s1.printfAverageScore();Student s2 new Student(); //对象都是类new出来的s2.name 王强;s2.Chinese 13;s2.Math 14;s2.printfTotalScore();s2.printfAverageScore();}
}参照黑马的讲解是将类比作一张空白的表格而每个对象是已经填好数据的表。
学生表 姓名null数学0语文0..... s1 姓名楠楠数学100语文100..... 2.对象在计算机中的执行原理 这是参照黑马绘制的执行流程 。还是区分代码什么部分在虚拟机内存中什么位置运行。 引用类型 Student s1 new Student();s1变量中存储的是对象的地址因此变量s1也称为引用类型的变量。 3.类和对象的一些注意事项 类名建议用英文单词首字母大写满足驼峰模式且要有意义类如StudentCar类中定义的变量也称为成员变量对象的属性类中定义的方法也称成员方法对象的行为。成员变量本身存在默认值同学们在定义变量时一般来说不需要赋初始值没有意义 数据类型明细默认值基本类型byte.short.char.int .long0float.double0.0booleanfalse引用类型数组,Stringnull一个代码文件中可以写多个class类但只能一个用public修饰且public修饰的类名必须成为代码文件名。对象会和对象之间的数据不会相互影响但是多个变量指向同一个对象时就会相互影响了。定义好s1后再让 s2 s1修改s2就会影响s1。 如果某个对象没有一个变量引用它则该对象无法被操作了该对象会成为所谓的垃圾对象。会被清除。 4.类与对象的一些语法知识
1this关键字 this是一个变量可以用在方法中来拿到当前对象。主要用来解决变量名称的冲突问题。
import java.net.SocketOption;public class Student {public void prrintthis(){System.out.println(this);}
}public class Text2 {public static void main(String[] args) {//目标认识this掌握this的应用场景Student s1 new Student();System.out.println(s1);s1.prrintthis();System.out.println(________________________);Student s2 new Student();System.out.println(s2);s2.prrintthis();}
}this的执行原理在方法区调用this时堆内存会把当前对象的地址传给this。执行图省略
this的应用场景 在解决形参变量名和类中变量名冲突的问题时还可以修改形参名来解决但是使用this更符合编码规范。 2构造器
本质一个与类名相同的方法
public class Student{public Student(){.....}
}
构造器的特点
创建对象时对象会去调用构造器。
Student s new Syudent(); //验证构造器触发的代码
package constructor;
public class Student {//无参数构造器public Student(){System.out.println(无参数构造器被触发执行了);}//有参数构造器public Student(String name,double score){System.out.println(有参数构造器被触发执行了);}
}package constructor;public class Tsxt {public static void main(String[] args) {//目标认识构造器并掌握构造器的特点应用场景和注意事项Student s new Student();//Student s new Student(楠楠”100);}
}构造器的常见应用场景
创建对象时同时完成对对象成员变量(属性)的初始化赋值。 不使用构造器时进行变量赋值如果变量数量比较多赋值就不太方便。 使用构造器时就可以在完成创建的同时完成赋值。
构造器的注意事项
类在设计时如果不写构造器java会自动生成一个无参构造器的。 一旦有了有参构造器JAVA就不会帮我们的类自动生成无参构造器了。此时就建议自己手写一个无参构造器出来。
3封装 封装是将对象的数据属性和操作数据的方法行为结合起来形成一个独立的单元。通过封装可以隐藏对象的内部实现细节只对外提供有限的接口即方法从而提高了代码的安全性和可维护性。 就是把类设计对象处理某一个事物的数据时应该把要处理的数据以及处理这些数据的方法涉及到一个对象中去。
封装的设计规范 合理隐藏 合理暴露
前提补充所谓隐藏与暴露实际是类中修饰词 public公开 和 private私有 的使用。 像这里将类中的score修饰为 pivate 后再在外部调用就会报错。类内部还是可以正常使用的这里对于这个成绩我们会发现如果暴露可能会导致有随意赋值的情况产生但是隐藏又无法达到赋值成绩实现功能的目的。所以为了合理隐藏和合理暴露就要采用方法的手段。
package encapsulation;public class student {private double score;public void setScore(double score){if(score0 score 100){ this.score score;}else {System.out.println(数据非法);}}private double getScore(){return score;}public void printPass(){System.out.println(score 60 ?成绩合格:成绩不合格);}
}像这样并不直接将数据暴露而是只暴露修改函数通过函数来修改值这里我们还可以写代码来限制和判断输入数据的合法性。这是对于的成员变量的合理隐藏合理暴露的操作而对于方法而言只需要看是否需要被外界访问需要则公开不需要则隐藏。 快捷构造getset函数
1.在IDEA代码界面右键选中 生成 2.生成界面选择 Getter 和 Setter 3. 弹出界面后选择要生成函数的成员名称按住shift键可以进行多选 4.最后确定完成 快捷生成构造器
1.和上述一致打开生成界面 选择 构造函数 Constructor 2.选择构造函数要传参的成员变量如果选择无参数类型的选择无。 4实体javaBean 实体类 实体类是一种特殊形式的类。这个类中的成员变量都要私有并且要对外提供相应的getXXX和setXXX方法。类中必须要有一个公共的无参的构造器。
package javaBean;public class Student {//1.必须私有变量并为每个都要提供 get set 方法private String name;private double score;//2.必须为类提供一个公开的无参数的构造器public Student() {}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;}
}package javaBean;public class Text {public static void main(String[] args) {//目标:掌握实体类的书写要求特点应用场景。Student s new Student();s.setName(楠楠);s.setScore(100);System.out.println(s.getName());System.out.println(s.getScore());}
}实体类的特点 只有为了存储某个类的数据。 实体类的应用场景 一个类中封装了太多方法时开辟实体类只负责数据存储而对数据的处理交给其他类来完成已实现数据和数据业务处理相分离。这种开发方式比较流行
package javaBean;public class Student {//1.必须私有变量并为每个都要提供 get set 方法private String name;private double score;//2.必须为类提供一个公开的无参数的构造器public Student() {}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;}
}class Studentperator{private Student student;public Studentperator( Student student){this.student student;}public void printPass(){if(student.getScore() 60){System.out.println(student.getName()成绩及格);}else {System.out.println(student.getName()成绩不及格);}}
}5.面向对象编程的综合案例 需求 1.展示系统中的全部电影每部电影展示名称 价格 2.允许用户根据电影编号id查询某个电影的详细信息 package Demo;public class Movie {private int id;private String name;private double price;private double score;private String director;private String actor;private String info;public Movie() {}public Movie(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;}
}package Demo;import java.sql.SQLOutput;public class MoivePerator {private Movie[] movies;public MoivePerator(Movie[] movies){this.movies movies;}//展示系统全部信息public void printAllMovies(){System.out.println(———————————系统全部电影信息——————————);for (int i 0; i movies.length; i) {Movie m movies[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 movies.length; i) {Movie m movies[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.getScore());System.out.println(导演 m.getDirector());System.out.println(主演 m.getActor());System.out.println(其他信息 m.getInfo());return; //已经找到}System.out.println(没有该电影信息);}}
}package Demo;import java.util.Scanner;public class Text {public static void main(String[] args) {//1.设计一个电影类//2.设计一个电影操作类//3.准备 全部电影数据Movie[] movies new Movie[4];movies[0] new Movie(1,1,1,1,1,1,1);movies[1] new Movie(2,1,1,1,1,1,1);movies[2] new Movie(3,1,1,1,1,1,1);movies[3] new Movie(4,1,1,1,1,1,1);MoivePerator mp new MoivePerator(movies);Scanner sc new Scanner(System.in);while(true) {System.out.println(电影信息查询);System.out.println(1.全部信息查询);System.out.println(2.id查询信息);int command sc.nextInt();switch (command) {case 1:mp.printAllMovies();break;case 2:System.out.println(请输入您要查询的电影id);int id sc.nextInt();mp.searchMovieByid(id);break;default:System.out.println(输入错误 请重新输入);}}}
}6.*补充成员变量,局部变量的区别
区别成员变量局部变量类中位置不同类中方法中常见方法中初始化值不同有默认值不需要初始化赋值没有默认值使用之前必须完成赋值内存位置不同堆内存栈内存作用域不同整个对象在所归属的大括号内生命周期不同与对象共存亡随着方法的调用而生随着方法的运行而结束 7.总结 学习时间2024.7.31