当前位置: 首页 > 后端技术 > Java

类和对象

时间:2023-04-01 21:44:35 Java

1。类与对象1.1类与对象的认识一切客观存在的事物都是对象,所以我们常说万物皆对象。类的理解类是现实生活中具有共同属性和行为的事物的抽象类。类是对象的数据类型。类是具有相同属性和行为的对象的集合。描述类的组件属性:指事物的特性,例如:手机事物(品牌、价格、尺寸)行为:指事物可以进行的操作,例如:手机事物(打电话、发短信)类与对象关系类:类是现实生活中具有共同属性和行为的一类事物的抽象对象:是看得见、摸得着的真实实体。简单理解:类是对事物的描述,对象是具体的。Things1.2类定义一个类的组成由两部分组成:属性和行为去掉static关键字即可)类定义步骤:①定义类②写类的成员变量③写类public类的成员方法classname{//成员变量的数据类型variable1variable1;变量2的数据类型变量2;...//成员方法method1;方法二;}示例代码:/*手机类:类名:手机(Phone)成员变量:品牌(brand)价格(price)成员方法:调用(call)发送短信(sendMessage)*/publicclassPhone{//Member可变字符串品牌;国际价格;//成员方法publicvoidcall(){System.out.println("Call");}publicvoidsendMessage(){System.out.println("发送短信");}}1.3对象的使用创建对象的格式:类名objectname=newclassname();调用成员的格式:对象名。成员变量对象名。membermethod();示例代码/*创建对象格式:类名对象名=new类名();示例:电话p=newPhone();使用对象1:使用成员变量格式:对象名.变量名示例:p.brand2:使用成员方法格式:对象名.方法名()示例:p.call()*/publicclassPhoneDemo{publicstaticvoidmain(String[]args){//创建对象Phonep=newPhone();//使用成员变量System.out.println(p.brand);System.out.println(p.price);p.brand="小米";p.price=2999;System.out.println(p.brand);System.out.println(p.price);//使用成员方法p.call();p.sendMessage();}}1.4students对象-实践要求:先定义一个student类,再定义一个student测试类,通过student测试类中的对象完成成员变量和成员方法的使用分析:成员变量:姓名,年龄...成员方法:学习,做作业...示例代码:publicclassStudent{//成员变量Stringname;年龄;//成员方法publicvoidstudy(){System.out.println("好好学习,天天向上");}publicvoiddoHomework(){System.out.println("键盘坏了,月薪过万");}}/*Studenttestclass*/publicclassStudentDemo{publicstaticvoidmain(String[]args){//创建对象Students=newStudent();//使用对象System.out.println(s.name+","+s.age);s.name="林青霞";s.age=30;System.out.println(s.name+","+s.age);s.study();s.doHomework();}}2.对象内存映射2.1单对象内存映射成员变量使用进程成员方法调用进程2.2多对象内存映射成员变量使用进程成员方法调用进程总结:堆内存中的多个对象内存划分不同,成员变量存储在各自的内存区,成员方法与多个对象共享一个共享3.成员变量和局部变量3.1成员变量和局部变量的区别在类中的位置不同:成员变量(在方法之外)类)局部变量(方法内部或方法声明上)在内存中的位置不同:成员变量(堆内存)和局部变量(栈内存)的生命周期不同:成员变量(存在于对象的存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,随着方法的调用而消失)不同的初始化值:成员变量(有默认的初始化值)局部变量(没有默认初始化值,必须先定义,赋值后才能使用)4.封装4.1封装思想封装概述是面向对象的三大特性(封装、继承、多态)之一。一个对象所代表的必须封装相应的数据,并提供数据对应的行为封装代码,将类的一些信息隐藏在类内部,不允许外部程序直接访问,而是使用该类提供的方法实现对隐藏信息的操作和访问成员变量private,提供相应的getXxx()/setXxx()方法4.2private关键字private是修饰符,可以用来修饰成员(成员变量,成员方法)private修饰的成员只能在本类中被访问,对于private修饰的成员变量如果需要被其他类使用,提供相应的操作,提供“获取变量名()”方法获取成员变量的值。该方法修改为public,提供“设置变量名(参数)”方法,用于设置成员变量的值,该方法修改为public,示例代码:/*studentclass*/classStudent{//成员变量字符串名;私人的年龄;//提供get/set方法publicvoidsetAge(inta){if(a<0||a>120){System.out.println("你给的年龄是错误的");}else{年龄=a;}}publicintgetAge(){返回年龄;}//成员方法publicvoidshow(){System.out.println(name+","+age);}}/*studenttestclass*/publicclassStudentDemo{publicstaticvoidmain(String[]args){//创建对象Students=newStudent();//给成员变量赋值s.name="林青霞";s.setAge(30);//调用显示方法s.show();}}4.3private使用需求:定义一个标准的student类,要求name和age修饰为private,并提供set和get方法以及显示数据的show方法,在测试类中创建对象并使用,最终控制台输出林青霞,30示例代码:/*studentclass*/classStudent{//成员变量privateStringname;私人年龄;//获取/设置方法publicvoidsetName(Stringn){name=n;}publicStringgetName(){返回名称;}publicvoidsetAge(inta){age=a;}公共整数getAge(){返回年龄;}publicvoidshow(){System.out.println(name+","+age);}}/*Studenttestclass*/publicclassStudentDemo{publicstaticvoidmain(String[]args){//创建对象Students=newStudent();//使用set方法给成员变量赋值s.setName("林青霞");s.setAge(30);s.show();//使用get方法获取成员变量的值System.out.println(s.getName()+"---"+s.getAge());System.out.println(s.getName()+","+s.getAge());}}4.4this修饰的变量this关键字用于引用成员变量,其主要作用是(区分局部变量和成员变量的重名问题)如果方法的形参与成员重名变量,不带this修饰的变量指的是形参,不是成员变量。方法的形参与成员变量不重名。没有这个修饰的变量是指成员变量publicclassStudent{privateStringname;私人年龄;publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){返回名称;}publicvoidsetAge(intage){this.age=age;}publicintgetAge(){返回年龄;}公共无效小号how(){System.out.println(name+","+age);}}5.构造方法5.1构造方法概述构造方法是一个特殊的方法函数:创建一个对象Studentstu=newStudent();格式:publicclass类名{修饰类名(参数){}}功能:主要完成对象数据的初始化示例代码:classStudent{privateStringname;私人年龄;//构造方法publicStudent(){System.out.println("无参数构造方法");}publicvoidshow(){System.out.println(name+","+age);}}/*测试类*/publicclassStudentDemo{publicstaticvoidmain(String[]args){//创建对象Students=newStudent();s.show();}}5.2构造方法创建注意事项如果没有定义构造方法,系统会给一个默认的无参构造函数如果定义了构造函数,系统将不再提供默认构造函数的重载建议用法构造方法不管用不用,无参构造方法的重要功能都是手动写的!可以使用带参数的构造来初始化成员变量示例代码/*studentclass*/classStudent{privateStringname;私人年龄;publicStudent(){}publicStudent(Stringname){this.name=name;}publicStudent(intage){这个.age=年龄;}publicStudent(Stringname,intage){this.name=name;这个。年龄=年龄;}publicvoidshow(){System.out.println(name+","+age);}}/*测试类*/publicclassStudentDemo{publicstaticvoidmain(String[]args){//创建对象Students1=newStudent();s1.显示();//publicStudent(Stringname)Students2=newStudent("林青霞");s2.show();//publicStudent(intage)Students3=newStudent(30);s3.显示();//publicStudent(Stringname,intage)Students4=newStudent("林青霞",30);s4.显示();}}5.3标准类制作①类名需要熟悉名字②成员变量修饰为private③至少提供两种构造方法无参构造方法带参数的构造方法④get和set方法提供setXxx()/getXxx()对应每个成员变量⑤如果还有其他行为,还需要写5.4习题1要求:定义标准学生类,分别要求创建空参数对象,参数化构造方法。空参数创建的对象通过setXxx赋值,带参数创建的对象直接赋值,通过show方法显示数据示例代码:classStudent{//成员变量privateStringname;私人年龄;//构造方法publicStudent(){}publicStudent(Stringname,intage){this.name=name;这个。年龄=年龄;}//成员方法publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){返回名称;}publicvoidsetAge(intage){this.age=age;}publicintgetAge(){返回年龄;}publicvoidshow(){System.out.println(name+","+age);}}/*创建对象并为其成员变量赋值的两种方式1:无参构造方法创建对象然后使用setXxx()赋值2:使用带参数的构造方法直接创建一个具有属性值的对象*/publicclassStudentDemo{publicstaticvoidmain(String[]args){//使用setXxx()赋值Students1=newStudent();s1.setName("林青霞");s1.setAge(30);s1.显示();//使用带参数的构造方法,直接创建一个有属性值的对象Students2=newStudent("林青霞",30);s2.show();}}5.4练习2publicclass用户{//1.私有化所有成员变量//2.空参数构造//3.具有所有参数的构造//4。对于每一个私有化的成员变量,其对应的get和set方法//5.如果当前事物有其他行为,也要写出来,比如学生的吃饭、睡觉等行为;//性别privateintage;//age//空参数构造方法publicUser(){}//带所有参数构造publicUser(Stringusername,Stringpassword,Stringemail,chargender,intage){this.用户名=用户名;this.password=密码;this.email=电子邮件;this.gender=性别;这个。年龄=年龄;}//获取并设置publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){返回密码;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetEmail(){返回邮件;}publicvoidsetEmail(String电子邮件){this.email=电子邮件;}publicchargetGender(){返回性别;}publicvoidsetGender(chargender){this.gender=gender;}publicintgetAge(){返回年龄;}publicvoidsetAge(intage){this.age=age;}publicvoideat(){System.out.println(username+"eating");}}publicclassTest{publicstaticvoidmain(String[]args){//写一个标准的javabean类//只要我们课后能写出这个标准的javabean,就说明今天的知识点可以了//用空参数结构创建对象Useru1=newUser();//如果要创建一个空参数的对象,只能使用set方法赋值u1.setUsername("zhangsan");u1.setPassword("1234qwer");u1.setEmail("itheima@itcast.cn");u1.setGender('男');u1.setAge(23);//获取属性值并打印System.out.println(u1.getUsername()+","+u1.getPassword()+","+u1.getEmail()+","+u1.getGender()+","+u1.getAge());u1.eat();System.out.println("==============================");//简单方式//使用所有参数的结构体创建对象//快捷键:ctrl+pUseru2=newUser("lisi","12345678","lisi@itcast.cn",'female',24);System.out.println(u2.getUsername()+","+u2.getPassword()+","+u2.getEmail()+","+u2.getGender()+","+u2.getAge());u2。吃();}}