Java基础:类的基本语法
类的基本语法大一蒟蒻学习Java基础的笔记1.构造器构造器就是名字和类名一致并且没有定义返回值的一种特殊方法。构造器长什么样如下代码所示//1.无参数构造器publicclassStudent{/*类中的构造器*/publicStudent(){//只有修饰符没有返回值特殊形式}}//2.有参数构造器publicclassStudent{publicStudent(Stringname,intage){}}构造器有什么特点呢创建对象时对象会调用构造器我们可以指定对象去调用哪个构造器去执行。//例如StudentsnewStudent();构造器的常见应用场景创建对象时同时完成对对象成员变量(属性)的初始化赋值。//例如//有参数构造器publicclassStudent{Stringname;intage;chargender;publicStudent(Stringn,inta,charg){namen;agea;genderg;}}//对象调用Students1newStudent(乐邦詹士,41,男)构造器的注意事项1.类默认就自带了一个无参构造器2.如果为类定义了有参数构造器类默认的无参数构造器就没有了若还想用无参数构造器就必须自己手写一个无参数构造器出来。3.要么都不写要么都写无参数在开发中别人可能会使用2. this关键字this 关键字是什么this就是一个变量可以用在方法中来拿到当前对象哪个对象调用这个方法this就拿到哪个对象(取地址)this有哪些应用场景this主要用来解决变量名称冲突问题//例如publicclassStudent{Stringname;//成员变量(整个对象都可以用)publicvoidprintHobby(Stringname){//局部变量(方法内部)System.out.println(this.name喜欢name);}}3.封装什么是封装就是用类设计对象处理某一个事务的数据时应该把要处理的数据以及处理这些数据的方法设计到一个对象中去面向对象的三大特征封装继承多态封装的设计要求合理隐藏合理暴露。1.如何隐藏对象的成员使用private关键字(私有隐藏)修饰成员变量就只能在本类中被直接访问其他任何地方不能直接访问2.如何暴露对象的成员合理暴露使用public(公开)的get和set方法合理暴露成员变量的取值和赋值//例如//1.为年龄赋值publicvoidsetAge(intage){if(age0age200){this.ageage;}else{System.out.println(您赋值的年龄数据非法);//例如web端对于输入的年龄的校验}}//调用s1.setAge(18);//赋值18//2.为年龄取值publicintgetAge(){returnage;}//调用System.out.println(s1.getAge());//取值总结代码层面如何控对象的成员的公开与与隐藏:公开成员可以使用public(公开)进行修饰。隐藏成员使用private(私有隐藏)进行修饰4.实体类(特殊类) Javabean1.是一种特殊类类中要满足如下需求1.类中的成员变量全部私有并提供public修饰的getter/setter方法2.类中要提供一个无参数的构造器有参数构造器可选。publicclassTest{publicstaticvoidmain(String[]args){//实体类的作用创建它的对象存取封装数据//调用无参构造器的对象StudentsnewStudent();s.setName(张三);//调用有参构造器的对象Students1newStudent(王五);}}//实体类publicclassStudent{//1.私有成员变量privateStringname;//2.提供公平的getter和setter方法暴露其取值和赋值//必须提供一个无参构造器publicStudent(){}//提供一个有参构造器可选publicStudent(Stringname){this.namename;}publicStringgetName(){returnname;}2.实体类有啥应用场景实体类的对象只负责数据读取而对数据的业务处理交给其他类的对象来完成以实现数据和数据业务处理相分离。(分层思想)publicclassStudent{privateStringname;privatedoublescore;//getter/setter 方法}publicclassStudentOperator{privateStudents;//用来记住将来要操作的学生对象 nullpublicStudentOperator(Students){this.Students;}//打印总成绩publicvoidprintscore{}//打印平均成绩//……}publicclassTest{publicstaticvoidmain(String[]args){Students1newStudent(王五,80);//创建一个学生的操作对象专门负责对学生对象的数据进行业务分析StudentOperateopnewStudentOperate(s1);op.printscore();}}小结1.什么是实体类有什么特点成员变量必须私有且要为它们提供get、set方法必须有无参数构造器仅仅是一个用来保存数据的Java类可以用它来创建对象保存某个事物的数据2.实体类的应用场景(如上)4. static1. static 修饰成员变量成员变量按照有无static修饰分为两种静态变量类变量有static修饰属于类在计算机里只有一份会被类的全部对象共享。访问方式类名.静态对象也可以以“对象名.静态变量”的方式语法上不推荐 实例变量对象的变量无static修饰属于每个对象的。访问方式对象.实例变量注意不允许使用this关键字publicclassstudent{//静态变量属于类只加载一份可以被类和类的全部对象共享访问staticStringname;//先进入堆内存null//实例变量对象的变量属于对象每个对象一份intage;}静态变量应用场景如果某个数据只需要一份且希望能够被共享修改/访问则该数据可以定义为静态变量来记住例如记录用户类创建了多少用户对象publicclassUser{//静态变量privatestaticintnumber;//构造器publicUser(){User.number;}}访问自己类中的类变量可以省略类名不写注意在某类中访问其他类里的类变量必须带类名访问publicclassStudent{staticStringschoolHUT;//类变量静态变量publicvoidshowSchool(){//本类内访问类变量可省略类名StudentSystem.out.println(school);//等价于Student.school}}2. static修饰方法使用规范1.如果这个方法只是为了做一个功能且不需要直接访问对象的数据那么这个方法应该定义为静态方法2.如果这个方法是对象的行为需要访问对象数据那么这个方法应该定义为实例方法publicclassTest{publicstaticvoidmain(String[]args){//认识 static修饰与不修饰方法的区别//1.类名.静态方法推荐Student.printHelloWorld();//2.对象.静态方法不推荐Students1newStudent();s1.printHelloWorld();//3.对象名.实例方法//Student.printPass(); //报错s1.setScore(59.9);s1.printPass();}}publicclassStudent{privatedoublescore;//静态方法:有static修饰属于类持有publicstaticvoidprintHelloWorld(){System.out.println(Hello World);System.out.println(Hello World);System.out.println(Hello World);}//实例方法:无static修饰属于对象持有publicvoidprintPass(){System.out.println(score60?通过:挂科了);}publicvoidsetScore(doublescore){this.scorescore;}}3.静态方法的应用静态方法常见的应用场景做工具类工具类是什么工具类中的方法都是一些静态方法每个方法用来完成一项功能以便于开发者直接使用。使用类方法来设计工具类有啥好处提高了代码复用调用方便提高了开发的效率注意工具类没有创建对象的需求占内存建议将工具类的构造器进行私有4. static的注意事项静态方法中可以直接访问静态成员不可以直接访问实例成员实例方法中既可以直接访问静态成员也可以直接访问实例成员实例方法中可以出现this关键字静态方法中不可以出现this关键字的