2014-7-20实训笔记一、类1、类的概念:对相同属性,相同的行为的类2对象:类的实例3、类的创建访问修饰class类的名字{//属性(数据/首字母小写/名词)访问修饰类型属性的名字;//构造方法访问修饰构造方法名[和类的名字相同](){}//普通方法(行为/功能)访问修饰返回类型(void/8种简单简单类型/3种复合类型)方法名字(首字母小写/动宾短语)(形参1,形参2){//形参(当需要在方法里传值时,调用方法时,看清楚形参的个数和类型描述:类型形参的名字)//方法体return值;(1.方法一定有类型/返回的值的类型和定义方法时的返回类型相同)}//方法的入口}二、类的构造次序与this关键字1、类的构造次序:创建对象——初始化成员变量——附初值对象何时创建:通过new关键字创建对象例:publicclassInfo{Stringname=aa;intage=19;publicInfo(Stringname,intage){this.name=name;this.age=age;}publicvoiddisplay(){System.out.println(name+age);}publicstaticvoidmain(String[]args){Infoa=newInfo(dd,23);a.display();}}//值为dd,23默认先给Info附初值,为null,0然后由属性值给Info赋值aa,19,最后由构造方法定义的值替换属性值,最后为dd,232、This关键字1、this对象有关系this是当前调用该属性或者方法的对象2、this不能用于用static所有修饰的内容里3、Java中为解决变量的命名冲突和不确定性问题,引入关键字“this”,代表其所在类的对象(也就是当前类的对象)4、this关键字的用法:在类本身的方法或构造器中引用该类的实例变量和方法将当前对象作为参数传递给其它方法或构造器用来调用其他的重载的构造器普通方法的重载名字是一样,形参的类型不一样,个数不一样,和返回类型没有任何关系。三、构造方法:1、如何写a、不能有返回类型/返回值b、方法名字名字就是类名字C、构造方法里传入一些参数(初始化属性)2、初始化:1.定义publicintage=23;每生成一个实例的时候,都有初始化值。2.构造方法初始化publicStringname;publicPerson(StringpName){name=pName;}newPerson(“xiaowang”);当我们显示写出来构造方法,编译器就不会再提供不带参数的构造方法。四、所有变量1、成员变量与局部变量所有变量:a:成员变量:类变量(以static修饰)实例变量(不以static修饰的变量)B:局部变量:形参(方法签名中定义的变量,作用域是整个方法内有效)方法局部变量(在方法内定义的变量,它的作用域是从定义该变量的地方生效,到该方法结束时失效)代码块局部变量(在代码块内定义的变量,作用域是从定义该变量的地方生效,到该代码块结束时失效)**与成员变量不同的是,局部变量除了形参之外,都必须显式初始化.也就是说,必须先给方法局部变量和代码块局部变量指定初始值,否则不可以访问它们.2、类属性初始化a、类属性与实例属性的区别类属性:类存在时就初始化只要是被修改,所有访问的对象看到的都是被修改后的值。已经知道有类存在(类被加载到虚拟机),属性就会存在可以根据类名或者具体的对象名去访问,去修改值存在于静态区域,只有一个空间,任一个对象去更改这个区域的值,其他对象看到的值都会被更改实例属性:在new对象时初始化的修改只和他所对应的对象有关当前对象已经被创建对于实例属性来说,只可以根据对象名去访问/修改不同的对象之间的实例属性都有单独的区域,所以他们之间的值互补影响。3、成员变量初始化简单类型有各自的初始化值,复合类型默认初始化值为NULL.8种简单类型的初始化值分别是:整数类型:int0byte0short0long0浮点数(小数)float0.0double0.0字符类型char空格布尔类型booleanfalse2.复合类型的初始化值是(null)五、练习publicclassBook{Stringtitle=计算机;intpageNum;inttype;publicBook(intpageNum,inttype){this.pageNum=pageNum;this.type=type;}publicBook(Stringtitle,intpageNum,inttype){this.title=title;this.pageNum=pageNum;this.type=type;}//publicvoidgetDetail(){//System.out.println(名称+title+页数+pageNum+类型+type);//}publicStringgetDetail(){return名称+title+页数+pageNum+类型+type;}publicstaticvoidmain(String[]args){Bookf=newBook(Chinese,67,9);//f.getDetail();Stringdd=f.getDetail();System.out.println(dd);}}publicclassBook1{publicStringname;publicstaticintpage;publicstaticvoidmain(String[]args){Book1s=newBook1();Book1x=newBook1();s.name=水水水水;x.name=快快快;s.page=11;x.page=21;System.out.println(s.name);//水水水水System.out.println(s.page);//21System.out.println(x.name);//快快快System.out.println(x.page);//21}}//page被覆盖/**类属性存在于静态区域,任一个对象去更改这个区域的值,其他对象看到的值都会去更改实例属性:不同对象之间的实例属性都有单独的值,所以他们之间的值互不影响*/publicclassBook1{publicStringname;publicstaticintpage;publicstaticvoidmain(String[]args){Book1s=newBook1();Book1x=newBook1();s.name=水水水水;x.name=快快快;s.page=11;x.page=21;System.out.println(s.name);//水水水水System.out.println(s.page);//21System.out.println(x.name);//快快快System.out.println(x.page);//21}}//page被覆盖/**类属性存在于静态区域,任一个对象去更改这个区域的值,其他对象看到的值都会去更改实例属性:不同对象之间的实例属性都有单独的值,所以他们之间的值互不影响*/publicclassShuJu{intnum;doublea;charb;floatc;shortd;booleane;byteg;longf;publicstaticvoidmain(String[]args){ShuJuf=newShuJu();System.out.println(f.num);System.out.println(f.a);System.out.println(f.b);System.out.println(f.c);System.out.println(f.d);System.out.println(f.e);System.out.println(f.f);System.out.println(f.g);}}/**publicclassShuJu{publicvoidtest(intc,intd){inte=0;e=d;d=c;c=e;}publicstaticvoidmain(String[]args){inta=12;intb=23;ShuJubook=newShuJu();book.test(a,b);System.out.println(a);//12System.out.println(b);//23//System.out.println(c);//System.out.println(d);cd不能打印,因为他们是局部变量,局部变量在花括号之后会全部释放}}*/2014-7-22实训笔记一、Static关键字1、静态属性(类属性)使用static关键字修饰的成员变量称为静态成员变量2、静态方法(类方法)使用static关键修饰的方法称为静态方法,静态方法也称为类方法3、静态方法和成员方法的区别静态方法:每个对象都可访问此方法,所以也称为类方法(因为可以直接使用类名调用,也可以由对象调用)。对象方法:每个对象都独立拥有此方法,所以此方法只能由对象的拥有者调用(只可以由对象调用)。4静态块语法:Static{}二、封装1、含义封装性是面向特征对象的第一大特性,所谓封装性就是指对对外部不可见2、封装的使用1.属性封装private属性类型属性名称;2.对属性提供公开的方法操作属性例子:publicclassFeiZhuang{privateintage;publicStringname;publicFeiZhuang(Stringname){//this.age=age;this.name=name;}publicvoidaa(){System.out.println(name);}publicvoidsetage(intage){this.age=age;}publicintgetage(){System.out.println(age);returnage;}publicstaticvoidmain(String[]args){FeiZhuangf=newFeiZhuang(Alsa);f.aa();f.setage(12);f.getage();}}//private是私有的,属于私有的访问权限,是访问权限里最高的权限。被private修饰属性和方法,只能在类内部使用。所以要为它设置set(设值)和get(取值)方法,进行封装由构造方法和普通方法是打印不出age,会在编译时报错三、继承1、含义继承是面对象编程语言(oop)的主要特性之一,是在面向对象编程语言中实现代码重用的重要方式之一。所谓代码重用:简单理解就是把一些已经实现过的具有通用功能的类,在不同的项目中直接使用,而不需要在不同的项目中重复开发。这样做可以提高开发效率、节约开发成本,重用虽好、但不能滥用.(需要精心的设计)3、继承特性Java中一个类只能直接继承于一个父类(基类),但一个父类可以有多个子类(java中不支持多继承)4、继承语法class子类名extends父类名{//代码块}父类=基类=超类例子父类:publicclassParent1{StringeyeColor;intlenth;publicParent1(StringeyeColor,intlenth){this.lenth=lenth;this.eyeColor=eyeColor;}publicvoidaa(){System.out.println(眼睛颜色:+eyeColor+\n+长度:+lenth);}}子类:publicclassChild1extendsParent1{Stringhobby;publicChild1(Stringhobby){super(,2);this.hobby=hobby;}publicvoidss(){System.out.println(爱好:+hobby);}publicstaticvoidmain(String[]args){