JAVA郝斌

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JavaSEJava的特点(一)简单易学1、java的风格类似于C++2、java摒弃了C/C++中容易引发程序错误并难以掌握的一些特性,如指针、结构、以及内存管理等3、Java提供了丰富的类库,可以帮助我们很方便的开发java程序4、Java是完全面向对象的语言(二)安全性高1、java是一种强类型的语言,其类型检查比C/C++还要严格。类型检查帮助我们检查出许多开发早期出现的错误2、Java提供了垃圾回收机制,有效的避免了C/C++中最头疼的内存泄漏问题3、Java禁止非法内存访问,在没有授权的情况下是不能访问内存的。所有这些措施,使java程序员不用担心内存的崩溃总结:java去掉C和C++中影响程序健壮性的部分,使程序更安全,例如指针、内存申请和释放(三)跨平台Java作为一种网络语言,其源代码被编译成一种结构中立的中间文件格式。只要有java运行系统的机器都能执行这种中间代码。Java源程序被编译成一种与机器无关的字节码格式,在java虚拟机上运行Java源代码和字节码是与机器无关的,但JVM是与机器有关的。装有不同操作系统的机器上,需要有专门为该操作系统开发的JVM,JVM是与机器有关的(四)多线程的Java语言的一个重要特性就是在语言级支持多线程的程序设计。使得一个程序能够同时执行多个任务运行时注意的问题javacTest.javajavaA不能写javaTest,编译时必须写文件名,运行时写的是文件中的类名Java语言的基本元素——标识符标识符:程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier),包括:类名、变量名、常量名、方法名、...Java语言中,标识符是以字母、下划线、美元符($)开始的一个字符序列,后面可以跟字母、下划线、美元符、数字。什么是类把一类事物的静态属性和动态可以执行的操作组合在一起所得的这个概念就是类什么是对象类的一个个体(如果将对象比作汽车,那么类就是汽车的设计图纸)类的定义classPerson{intage;voidshout(){System.out.println(“oh,mygod!Iam”+age);}}age是类的属性,也叫类数据成员,也叫字段,也叫域shout是方法,也叫类的成员函数shout方法可以直接访问同一个类中的age变量classA{inti;intj;}classTestMemo{publicstaticvoidmain(String[]args){Aaa=newA();//(A*)malloc(sizaof(A));//newA();在堆中动态分配一块区域,被当做了A对象//aa本身的内存是在栈中分配的//堆中内存的地址付给了aa//aa指向堆中的内存,aa代表了堆中的内存//aa.i代表:aa这个静态指针变量所指向的动态内存中的A对象的i这个成员变量//aa.j代表:aa这个静态指针变量所指向的动态内存中的A对象的j这个成员变量aa.i=10;aa.j=20;}}类的访问控制符类的访问控制符有四种:publicprotect默认【即不加任何修饰符】private在一个类的内部,所有的成员可以相互访问,访问控制符是透明的;访问控制符是针对外部访问而言的在一个类的外部:通过(类对象名.私有成员名)的方式是无法访问该对象中的私有成员的,这样写编译时会出错外部访问包括两种方式:通过类名访问类内部的成员、通过类对象名访问类内部成员函数的重载:同名的函数通过不同的形参做类似的事情,这就叫函数的重载函数重载的要求:函数的形参个数函数的形参顺序函数的形参数据类型这三个至少有一个是不一样的如果两个函数只是函数的返回值不一样,其他都一样,这构不成函数的重载,并且编译时会报错StaticA类的多个对象公用一个static属性static属性i是属于类本身,或者讲:没有对象,我们仍然可以直接通过类名的方式访问该类内部的static属性static属性和方法虽然属于类本身,虽然可以通过类名的方式访问,但是static属性和方法很明显也属于类对象,当然也可以通过类对象名的方式访问只有非private的static成员才可以通过类名的方式访问,static只是表明了该成员具有了可以通过类名访问的潜在特征。但是否可以通过类名访问,还必须满足一个条件:该成员必须是非private静态方法不能访问非静态成员,非静态方法可以访问静态成员classA{privateinti;Privatestaticintcnt=0;PublicA(){++cnt;}PublicA(inti){This.i=i;++cnt;}PublicstaticintgetCnt(){Returncnt;}}PublicclassTestStatic_1{Publicstaticvoidmain(String[]args){System.out.printf(“当前时刻A对象的个数是:”,A.getCnt);Aaa1=newA();System.out.printf(“当前时刻A对象的个数是:”,A.getCnt);Aaa2=newA();System.out.printf(“当前时刻A对象的个数是:”,A.getCnt);}}一个类的属性可以是个类对象ClassA{Publicinti=20;PrivatestaticAaa=newA();PrivateA(){}PublicstaticAgetA()//static一定不能省略{Returnaa;}}PublicclassTestStatic_2{Publicstaticvoidmain(String[]args){Aaa1=A.getA();Aaa2=A.getA();aa.1=99;System.out.printf(“%d\n”,aa2.i);}}继承什么叫继承:一个新类从已有的类那里获得其已有的属性和方法,这种现象叫类的继承这个新类被称为子类,也叫派生类。已有的那个类叫做父类,也叫做基类继承的好处:代码得到极大的重用;形成一种类的层次体系结构;为多态创造条件继承的实现方式:classSubClassextendsSuperClass{}同包继承权限问题1、子类内部可以访问父类非私有的成员,私有成员无法被子类方法访问2、通过子类对象名只能访问从父类继承过来的非私有成员总结:私有不能被继承(私有物理上已经被继承过来,只不过逻辑上程序员不能去访问它,因此继承必须慎重,否则会浪费内存)继承的原则何时选择继承?一个很好的经验:“B是一个A吗?”如果是则让B做A的子类Java只支持单继承,不允许多重继承单继承就是一个类只能有一个父类多继承就是一个类可以有多个父类可以有多层继承,即一个类可以继承某一个类的子类,如类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A子类可以继承父类所有的成员变量和成员方法,但子类永远无法继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法子类访问父类成员的三种方式:在子类内部访问父类成员;通过子类对象名访问父类成员;通过子类的类名访问父类成员。经验证,子类通过上述三种方式的任何一种都无法访问父类私有成员,因此,我们可以得出结果:私有成员无法被子类继承Super1、每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种构造函数,那么编译的时候就会报错2、如果显示的写出super()语句,则必须保证该语句是第一条语句,否则会出错3、Super()如果不写,则编译器会自动添加,所以此时如果父类没有无参的构造函数就会出错4、既可以显示写super(),前提是父类必须有无参的构造函数也可以显示写super(实参),前提是父类必须有带参的构造函数5、调用父类的构造函数的语句必须借助于super,不能直接写父类的类名6、一个构造函数中不能写多个super(实数列表)语句方法重写什么叫方法重写:指在子类中重新定义父类中已有的方法重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型子类中不允许出现与父类同名同参但不同返回类型的方法,如果出现了,编译时会出错重写方法时,不能使用比父类中被覆盖的方法更严格的访问权限ClassHuman{PrivateStringname;Privateintage;PublicHuman(){}PublicHuman(Stringname,intage){This.name=name;This.age=age;}PublicvoidsetName(Stringname){This.name=name;}PublicvoidsetAge(intage){This.age=age;}PublicStringgetInfor(){StringstrInf=name+“:”+age;ReturnstrInf;}}ClassStudentextendsHuman{PublicStringschool;PublicStudent(){}PublicStudent(Stringname,intage,Stringschool){Supper(name,age);This.school=school;}PublicvoidsetSchool(Stringschool){This.school=school}PublicStringgetInfor(){StringstrInf=super.getInfor+”:”+school;ReturnstrInf;}}PublicclassTestStudent{Publicstaticvoidmain(String[]args){Studentst1=newStudent(“张三”,22,“路家”);System.out.printf(“%s\n”,st1.getInfor());}}多态一个父类的引用类型变量它既可以指向父类对象也可以指向子类对象,它可以根据当前时刻指向的不同,自动调用不同对象的方法,这就是多态多态的优点利用多态可以实现:同一段代码做不同事情多态注意事项子类对象可以直接赋给父类引用,但父类对象在任何情况下都不能直接赋给子类引用,因为子类是父类的一种,但父类不是子类的一种。通过父类引用只能访问子类对象从父类继承过来的成员,通过父类应用不能访问子类对象特有的成员父类引用永远不可能直接赋给子类引用,只有在父类引用本身指向的就是一个子类对象时,才可以把父类引用强制转化为子类引用抽象类抽象类的由来:利用抽象类是为了更好的对类加以分类。抽象类通常用来作为一个类族的最顶层的父类,用最底层的类表示现实中的具体事物,用最顶层的类表示该类族所有事物的共性抽象方法在定义java方法时可以只给出方法头,而不给出方法内部实现代码,这样的方法称为抽象方法。凡是没有方法体的方法必须得使用关键字abstract修饰为抽象方法。凡是含有抽象方法的类都必须得声明为抽象类。抽象类用abstract关键字来修饰一个类时,该类叫做抽象类包含抽象方法的类必须声明为抽象类。但是一个抽象类中却可以不包含任何抽象方法,尽管比较少见。抽象类不一定有抽象方法,有抽象方法的一定是抽象类FinalFinal可以修饰:整个类,类中的若干个属性,类中的若干个方法Final修饰整个类,表示该类不能被继承,如果认为一个类已经很完美不需要定义子类来继承它时,可以使用它。Final修饰类中的若干属性表示该属性必须被赋值并且只能被赋一次值(注意默认值不算真正的赋值)初始化方式有两种(只能选择其中的一种):在定义成员变量的同时初始化;在类中所有的构造函数中初始化注意:一个类的所有普通方法内部都不可以修改final修饰过的成员变量的值接口接口的定义:就是抽象方法和常量的集合。从本质上讲,接口是一种特殊的抽象类。接口的格式:【public】interfaceinterfaceName【extendsSuperInterfaceList】{......//常量定义和方法定义}1、接口中定义的属性必须是publicstaticfinal的,而接

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功