java教程.docx
- 文档编号:9185879
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:37
- 大小:26.53KB
java教程.docx
《java教程.docx》由会员分享,可在线阅读,更多相关《java教程.docx(37页珍藏版)》请在冰豆网上搜索。
java教程
1多态的使用
/*
*多态的使用。
*其实就是利用父类声明一个对象,然后子类实例化一个对象,将子类实例化的对象赋给父类
*方便后续调用。
其调用方法为父类名:
对象名=new子类名();
*注意点:
子类如果调用父类里面的方法,必须使用重写,重新去定义父类方法
*/
publicclassxwy{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
/*Catc=newCat();
c.cry();
Dogd=newDog();
d.cry();*/
Mastermaster=newMaster();
master.feed(newDog(),newBone());
master.feed(newCat(),newFish());
}
}
classAnimals{
Stringname;
intage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicvoidcry(){
System.out.println("我不知道怎么叫");
}
publicvoideat(){
System.out.println("我不知道吃什么");
}
}
classCatextendsAnimals{
publicvoidcry(){
System.out.println("喵喵叫");
}
publicvoideat(){
System.out.println("我喜欢吃鱼");
}
}
classDogextendsAnimals{
publicvoidcry(){
System.out.println("汪汪叫");
}
publicvoideat(){
System.out.println("我喜欢吃骨头");
}
}
classFood{
Stringname;
publicvoidshowName(){
}
}
classFishextendsFood{
publicvoidshowName(){
System.out.println("我是鱼");
}
}
classBoneextendsFood{
publicvoidshowName(){
System.out.println("我是骨头");
}
}
classMaster{
publicvoidfeed(Animalsan,Foodfo){
an.eat();
fo.showName();
}
}
2、abstract的使用
packagecom.xwyHomeWork1;
publicclassAbstractUsing{
/**
*抽象方法注意点:
1、如果要定义抽象方法,必须定义抽象类,否则出错!
*2、抽象方法绝对不能写具体方法,只有子类继承的时
*候才可以写具体方法
*3、如果子类要继承的父类是抽象类,那么子类必须实
*现抽象方法
*4、抽象类不能被实例化Animalsanimals=
*newAnimals();是错误的!
*5、抽象类可以里面不包含抽象方法,但是抽象方法必
*须写在抽象类里面
*6、凡是包含Abstract的类都叫抽象类
*7、抽象方法必须不包含主体即为“{}”;
*8、抽象类里可以有实现了的方法即不声明为abstract的方法
*可以有方法体
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
abstractclassAnimals{//定义一个抽象类
Stringname;
abstractpublicvoidcry();//定义一个抽象方法,里面绝对不能写具体的方法
}
classDogextendsAnimals{
publicvoidcry(){//该方法如果不写,就是错误的!
//donothing也叫实现;
System.out.println("汪汪叫");
}
}
3、接口
packagecom.xwyHomeWork1;
publicclassImplementsUsing{
/**
*接口就是把一些没有内容的方法封装起来,在使用的
*时候,根据情况把方法写出来
*class类名implements接口名{}
*使用接口原则一:
我们可以在接口里面定义不包含方法
*体的方法,publicvoid方法名();然后我们在定义类使用接口
*的时候(class类名implements接口名{}),必须把这些方法写好
*注意点:
1、接口不能被实例化
*2、接口里面任何方法不能有方法体,一个都不能有。
*3、一个类可以实现多个接口
*4、接口里面可以有变量,但不可以被private,protected修饰
*我们会把经常用的变量定义在接口里,因为他全为静态的,而且是
*final类型的全局变量,访问形式为接口名.变量名
*5、接口不能继承其他类,但是可以继承接口
*
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Computercomputer=newComputer();
Iphoneiphone=newIphone();
Cameracamera=newCamera();
computer.UsingUsb(camera);
computer.UsingUsb(iphone);
System.out.println(Usb.a);;
}
}
interfaceUsb{
inta=1;
//声明了两个方法
publicvoidstart();//开始工作
publicvoidend();//停止工作
}
//编写了一个照相机
classCameraimplementsUsb{
publicvoidstart(){
System.out.println("我是相机,我要开始工作了");
}
publicvoidend(){
System.out.println("我是相机,我要停止工作了");
}
}
classIphoneimplementsUsb{
publicvoidstart(){
System.out.println("我是手机,我要开始工作了");
}
publicvoidend(){
System.out.println("我是手机,我要停止工作了");
}
}
classComputer{
//开始使用Usb接口
publicvoidUsingUsb(Usbusb){
usb.start();
usb.end();
}
}
4、接口接口和继承的区别
packagecom.xwy1;
publicclassTest1{
/**
*功能:
接口和继承的区别
*java是单继承,只允许继承一个类,但是对子类的扩展有一定影响,
*所以我们认为,接口在一定程度上是继承的补充。
继承是层级式的,
*一级一级往下传,改变某个父类,会对子类产生很大的影响,而实现
*接口可以在不打破继承关系的前提下,对某个类进行扩展。
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
}
}
interfaceBird{
publicvoidfly();
}
interfaceFish{
publicvoidSwing();
}
classMonkey{
Stringname;
publicvoidjump(){
System.out.println("我是猴子,我会跳!
");
}
}
classLittleMonkeyextendsMonkeyimplementsFish,Bird{
@Override
publicvoidfly(){
//TODOAuto-generatedmethodstub
}
@Override
publicvoidSwing(){
//TODOAuto-generatedmethodstub
}
}
5卖小汽车
packagecom.xwy1;
publicclasstest2{
/**
*功能:
卖小汽车
*
*说明:
接口可以规定类的功能(当你需要实现该接口的类实现什么
*功能的时候,你就可以把功能写在接口里面,比如你希望所有类型
*的汽车都有名字和价格,那么你在写车接口的时候就把价格和名字
*写进去,无论什么车要实现该接口,都必须写出自己的名字和价格),
*Carcar//这个叫后期绑定,在编译时不能确定卖的是哪一款车
*inta=5;//这个叫前期绑定
*/
intmoney=0;
publicvoidsellCar(Carcar){
System.out.println(car.getName()+"卖了"+car.GetPrice());
money+=car.GetPrice();
}
publicintgetMoney(){
returnmoney;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
test2shop=newtest2();
shop.sellCar(newBMW());
shop.sellCar(newCheryQQ());
shop.sellCar(newSantana());
System.out.println("一共卖了"+shop.money);
}
}
interfaceCar{
StringgetName();
intGetPrice();
}
classBMWimplementsCar{
@Override
publicStringgetName(){
//TODOAuto-generatedmethodstub
return"BMW";
}
@Override
publicintGetPrice(){
//TODOAuto-generatedmethodstub
return300000;
}
}
classCheryQQimplementsCar{
@Override
publicStringgetName(){
//TODOAuto-generatedmethodstub
return"CheryQQ";
}
@Override
publicintGetPrice(){
//TODOAuto-generatedmethodstub
return50000;
}
}
//假设shop在卖宝马,QQ的基础上,又推出一款santana,那么我们只需加入下列代码即可
classSantanaimplementsCar{
@Override
publicStringgetName(){
//TODOAuto-generatedmethodstub
return"Santana";
}
@Override
publicintGetPrice(){
//TODOAuto-generatedmethodstub
return100000;
}
}
6、final
packagecom.xwy1;
publicclassTest3{
/**
*final:
最后的,最终的
*用途:
一般指程序员在有一些需求的时候采用final
*1、当程序员写了一个父类方法,不希望父类方法被修改时,可以呀final来修饰
*2、当不希望某个变量的值被修改时,用final修饰
*3、但不想某个方法被继承的时候,用final修饰
*4、当一个变量被final修饰时,必须赋初值!
!
!
*注意事项:
*1、final修饰的变量叫常量,一般使用xxx_xxx_xx来命名
*2、final修饰的变量必须赋值,且以后不能赋值。
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newBbb();
}
}
/*final*/classAaa{//加上final,下边就会出错!
inta=0;//最好在定义的时候,赋好初值
finalfloatrate=3.1415926f;
finalpublicvoidsendMessage(){
System.out.println("发消息");
}
}
classBbbextendsAaa{
/*publicpublicvoidsendMessage(){//会出错的
System.out.println("发消息");
}*/
publicBbb(){
a++;
//float++;//会出错
System.out.println(a);
}
}
7、数组的必要性
packagecom.xwy1;
publicclassArgs{
/**
*数组的必要性:
*1、可以存放同一类型的数据,并且保存在内存里
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
floatweight=1.5f;
floattw=0;
floatarr[]=newfloat[6];
for(inti=0;i<6;i++){
arr[i]=weight*i;
}
//计算总体重
for(inti=0;i<6;i++){
tw+=arr[i];
}
System.out.println(tw);
}
}
8、数组对象
packagecom.xwy1;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
/*
*比较字符串大小时,必须使用equals方法。
。
*1、数组可以存放同一类型的数据
*2、简单的数组可以直接赋值。
。
*3、对象数组在定义后,赋值时需要再次对每个对象分配空间
*4、数组大小必须事先指定。
*5、数组名可以理解为数组指向首地址的引用
*6、数组下标从0开始。
*/
publicclasstest4{
publicintinputWeight()throwsIOException{
System.out.println("请输入狗的体重");
InputStreamReaderisr1=newInputStreamReader(System.in);
BufferedReaderbr1=newBufferedReader(isr1);
returnInteger.parseInt(br1.readLine());
}
publicStringinputName()throwsIOException{
System.out.println("请输入狗的名字");
InputStreamReaderisr1=newInputStreamReader(System.in);
BufferedReaderbr1=newBufferedReader(isr1);
returnbr1.readLine();
}
publicvoidshow(Stringname,intweight){
System.out.println("我叫"+name+",我现在的体重是"+weight);
}
publicstaticvoidmain(String[]args)throwsIOException{
intmax=0;
Dogdog[]=newDog[4];//dog[0]是一个空指针,里面只有dog[0]的引用
test4test=newtest4();
for(inti=0;i<4;i++){
dog[i]=newDog();//必须重新在内存里开辟一块空间
dog[i].setName(test.inputName());
dog[i].setWeight(test.inputWeight());
}
for(inti=0;i<4;i++){
test.show(dog[i].getName(),dog[i].getWeight());
}
for(inti=0;i<3;i++){
if(dog[i].getWeight()>dog[i+1].getWeight()){
dog[i+1]=dog[i];
}
}
System.out.println("我是"+dog[3].getName()+",我的体重最大,是"+dog[3].getWeight());
}
}
classDog{
privateStringname;
privateintweight;
publicintgetWeight(){
returnweight;
}
publicvoidsetWeight(intweight){
this.weight=weight;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
9、排序
packagecom.xwy1;
importjava.util.Calendar;
publicclassTest5{
/**
*功能:
排序(sorting)冒泡排序法(小到大)
*内部排序法分为交换式排序(冒泡(Buddlesort),快速排序法(Quicksort)),
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intarr[]={1,5,3,9,4,6};//定义一个数组
InsertSortinsert=newInsertSort();//实例化插入排序法对象
insert.sort(arr);//使用插入排序法排序
BinaryFindfind=newBinaryFind();//使用二分法查找
/*intlen=100000;
for(inti=0;i inth=(int)Math.random()*10000;//随机产生一个数组,长度为10000; arr[i]=h; } Buddlebuddle=newBuddle();//实例化冒泡排序法 Calendarcal=Calendar.getInstance();//实例化一个时间对象 System.out.println("排序前时间为: "+cal.getTime()); buddle.sorts(arr);//使用冒泡排序法排序 cal=Calendar.getInstance(); System.out.println("排序后时间为: "+cal.getTime());*/ /*Selectselect=newSelect();//实例化选择排序法 cal=Calendar.getInstance(); System.out.println("排序前时间为: "+cal.getTime()); select.sorts(arr); cal=Calendar.getInstance(); System.out.println("排序后时间为: "+cal.getTime());*/ for(inti=0;i System.out.println(arr[i]); } find.find(arr,0,arr.length,6); } } classBuddle{ intchange=0; publicvoidsorts(intarr[]){ for(inti=0;i for(intj=0;j //较大的数放在后边,依次比较,从而从arr.length-i-1个元素中找出一个最大值,并且该值已处于最后一个位置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)