ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

类和对象知识点罗列(一)

类和对象知识点罗列(一) 类和对象一、class1.定义类时就要用class。2.在类中可以写成员变量和成员方法。成员变量在成员方法外定义例classWashMachine{publicStringbrand;// 品牌publicStringtype;// 型号publicdoubleweight;// 重量publicdoublelength;// ⻓publicdoublewidth;// 宽publicdoubleheight;// ⾼publicStringcolor;// 颜⾊publicvoidwashClothes(){// 洗⾐服System.out.println(洗⾐功能);}publicvoiddryClothes(){// 脱⽔System.out.println(脱⽔功能);}publicvoidsetTime(){// 定时System.out.println(定时功能);}}3.⼀般⼀个⽂件当中只定义⼀个类4.public修饰的类必须要和⽂件名相同二、类的实例化1.定义了⼀个类就相当于定义了⼀种新的类型就和intdouble类型一样⽤类类型创建对象的过程称为类的实例化2.在java中⽤new关键字配合类名来实例化对象。就是创建了一个该类型的变量给这个变量赋值就是实例化对象3.例publicclassMain{publicstaticvoidmain(String[]args){GirlFriendgirlFriend1newGirlFriend();//通过new实例化对象GirlFriendgirlFriend2newGirlFriend();}}new是在堆上创建了一块内存变量girlFriend1存的是这块内存的地址和数组一样4.new了一个GirlFriend就是生成了一个女朋友生成了一个对象每个对象都有属于自己的属性可以创建多个对象。三、访问对象中的成员1.通过对象的引用点号可以访问对象的成员变量和成员方法例girlFriend1.namecaocao;girlFriend1.eat();2.代码的内存分布四、this1.this代表当前对象的引用在一个类中要想在成员⽅法中访问成员变量就要用this2.this的类型即哪个对象调⽤就是哪个对象的引⽤类型类的类型就是当前的this的类型3.this只能在成员方法中使用。5.this的使用this.成员变量//访问对象的成员变量this.成员⽅法//访问对象的成员⽅法例publicclassDate{publicintyear;publicintmonth;publicintday;publicvoidsetDay(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}publicstaticvoidmain(String[]args){DatednewDate();d.setDay(2020,9,15);}}在一个类中若有俩个成员方法就可以在一个成员方法中用this.成员方法名来调用另一个成员方法五、对象的构造及初始化创建了一个对象后有三种初始化的方法。1.默认初始化对于成员变量来说如果没有进⾏初始化会有⼀个对应的默认值2.就地初始化在声明成员变量时就直接给出了初始值。例publicclassDate{publicintyear1900;publicintmonth1;publicintday1;}3.构造方法初始化构造⽅法是⼀个特殊的成员⽅法名字必须与类名相同在创建对象时由编译器⾃动调⽤并且在整个对象的⽣命周期内只调⽤⼀次。作用调用构造方法主要用来初始化这个对象的成员变量。例publicclassDate{publicintyear;publicintmonth;publicintday;publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;System.out.println(Date(int,int,int)⽅法被调⽤了);}publicstaticvoidmain(String[]args){// 此处创建了⼀个Date类型的对象自动调⽤了构造⽅法DatednewDate(1999,6,9);// 输出Date(int,int,int)⽅法被调⽤了}}此时写Date d new Date();这种不带参数的构造方法就是错的必须要传参构造方法注意事项名字必须与类名相同没有返回值类型设置为void也不⾏创建对象时由编译器⾃动调⽤并且在对象的⽣命周期内只调⽤⼀次(相当于⼈的出⽣每个⼈只能出⽣⼀次)只能new的时候调用一次构造⽅法可以重载(⽤⼾根据⾃⼰的需求提供不同参数的构造⽅法)当我们在类中没有写任何构造方法的时候Java会默认提供一个无参的构造方法⼀旦定义了其他的构造⽅法编译器则不再⽣成。构造方法的重载例publicclassDate{publicintyear;publicintmonth;publicintday;// ⽆参构造⽅法publicDate(){this.year1900;this.month1;this.day1;}// 带有三个参数的构造⽅法publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}publicstaticvoidmain(String[]args){DatednewDate();}构造⽅法中可以通过this调⽤其他构造⽅法来简化代码例publicclassDate{publicintyear;publicintmonth;publicintday;publicDate(){this(1900,1,1);//该语句必须是第一条}// 带有三个参数的构造⽅法publicDate(intyear,intmonth,intday){this.yearyear;this.monthmonth;this.dayday;}}注意事项• this(…)必须是构造⽅法中第⼀条语句• 不能形成环的调⽤例publicDate(){this(1900,1,1);}publicDate(intyear,intmonth,intday){this();}绝⼤多数情况下使⽤public来修饰六、对象的打印1.如果我们直接打印对象的引⽤此时输出的结果为类路径名对象的hashcode值。打印地址并且官方底层调用的是toString例publicstaticvoidmain(String[]args){PersonpersonnewPerson(Jim,男,18);System.out.println(person);}2.如果想要默认打印对象中的属性该如何处理呢答案重写toString⽅法即可。在要打印的对象对应的类中重写publicclassPerson{Stringname;Stringgender;intage;publicPerson(Stringname,Stringgender,intage){this.namename;this.gendergender;this.ageage;}OverridepublicStringtoString(){return[name,gender,age];//这样有多少个属性就要手动写多少个太麻烦可以编译器自动生成}publicstaticvoidmain(String[]args){PersonpersonnewPerson(Jim,男,18);System.out.println(person);}}// 输出结果[Jim,男,18]Override是注解表示该方法是重写的这样只要根据要重写的方法名编译器找不到要重写哪个方法如这里写成toString2没有哪个系统方法被重写编译器会报错警告
返回列表