免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1046 | 回复: 0
打印 上一主题 下一主题

面向对象编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-10 23:05 |只看该作者 |倒序浏览
面向对象编程
对象:包括数据和方法的包
继承:是把对象的共性的东西继承下来,以发展新的东西。如汽车共有的东西,通过这产生更多其它类型的车
类:    对象是类的实例。某种意义上说类是创建对象的模板。

2.1 建立OOP的程序思路:
1.  把代码分成最小的实体
2.  在实体中找共同点
3.  在实体间找差异
4.  寻找实体间最大的共同点
5.  把剩下的共同对象放在一起并重复
6.  利用对象扩充程序

使用new创建对象:
类的实例=new 类名(可选的参数)

非OOP中C++中的结构
Struct {
Int altitude;
Int heading;
Float longitude;
}

在面向对象中,结构的过程与结构本身装在一个类里,如:
class Flight
{
       int altitude;
       private int heading;
       int speed;
       float latitude;
       float longitude;
       void turnFlight(int angle){
              heading=(heading+angle)%360;
              //make sure angle is in the range 0-359 degrees
              if (heading
                     heading=heading+360;

              }
      
              void setHeading(int angle){
                     heading=angle%360;
                     //make sure angle is in the range 0-359 degrees
                     if (heading
                     heading=heading+360;
              }
                     int getHeading(){
                            return heading;
                     }
              void printFlight(){
                     System.out.println(altitude+"ft"+heading+"degrees/"+speed+"knots");
              }
       }
       class CommercialFlight extends Flight
       {
              //extra members
              int flightNumber;
              int passengers;
              void printFlight(){
                     System.out.print("Flight"+flightNumber+" ");
                     super.printFlight();
              }注:这个类也只是Flight类数据生成变量的模式,Flight类数据类型的变量是Flight对象,对象是一个类的实例的存储变量,类定义对象的成员变量和例程。
生成对象变量用: Flight incomeingFlight;
Flight变量可能有两个值:null或Fligt对象。生成incomingFlight引用的对象用new:
IncomingFlight=new Flight();
注:现在incomingFlight表示一个新的Flight对象,简单的说就是把Flight的代码用新的变量incomingFlight来表示。
用incomingFlight这个新的Flight对象就可以访问其成员变量 了:
IncomingFlight.altitude=2500;
……
成员函数以类似的方式调用:
IncomingFlight.turnFlight(90);

2.2 继承:
使用类取代结构解决了程序的复制问题。如CommercialFlight的成员要加两上,只要继承一下Flight就可以了。
Class CommercialFlight extends Flight{
Int flightnumber;                         //这两个是新加的成员
Int passengers;
}

注:尽可能多的隐蔽更多的变量,如使用private等,为了安全

CommercialFlight incomingCommercialFlight;
incomingCommercialFlight=new CommercialFlight();
incomingCommercialFlight.altitude=2500;          //这样就可以访问CommercialFlight的成员了。

如果在继承的子类调用父类的函数,使用super关键字,如:
Class CommercialFlight extends Flight {
Void print{
       System.out.println(“……..”);//这是CommercialFlight类自有的打印函数
       super.printFlight();               //调用父类Flight的打印函数  注意:不是Super
}
}


Need studying: 抽象类:要深入学习

2.3 多态性
多态函数是不限制传递变量类型的函数。
JAVA的三种多态方法:
继承―――子类自动继承父类成员函数。
重载―――在同一类中实现取用不同变元的同名成员函数    注:即类名相同传递参数不同
接口―――在不同类中实现取用相同变元的同名成员函数           /*定义接口用interface,如:
                                                                                                  Interface ReportPrint{
Void printonprort() ;},为告知类实现接口,       还要在类前加 implements 如:       class Flight implements ReportPrint{}*/



2.4 构造器
         与类名相同的对象。进一步学习…
9.5 结束器
需要定义一个finalize函数,清理内存所用,一般不太用。
Protected void finalize() throws Throwable{
System.out.println (“…..”);
super.finalize();
}

3 解释HelloWorld程序步骤:
    1.  //public class Classname{      }
      
      
      2. public static void main(String args[])
      //


四 数据类型及其它标记
JAVA数据类型:
1         分为基本类型,引用类型
Boolean          true or false    与C有区别(0,1)。
Byte        (-128~127)
Short      (-327868~32767)
Int          (-3147,483,648~2,147,483,647)
Long       (-9,223,372,036,854,775,808~9,223,372,036,854,775,,807)
Char              (0~65535)
注:如果创建的数大于这个范围不溢出或异常,而用补码值作为结果,byte的127+1= -128
Floal       1.40239846e-45f~3.40282347e+38f
Double    4.9....e~1.79….e+308d
注:浮点数可以有4个特殊状态:正负无穷大,0,非数。
2.       声明变量用户必须知道的几件事情:
*使用的数据类型
*什么东西要调用变量
*可能要知道变量 的初值
3.标识符命名规则(同C),注意的是java也区分大小写。
4.数组
       Int IQ[]={1,2,3,4,45,5,6};    注:与perl有很大不同
       访问数组       int data=IQ[2]
       数组定义三步:
       A.声明数组        方法:int myarray[]; or int [] myarray;
       B.为数组分配内存空间     myarray=new int[50]     new后跟变量类型及元素数量
       C.在数组中放数据            myarray[3]=2;
       例子:long prime[]=new long[1000]   //声明数组并分配内存
prime[2]=5;
Int IQ[]={1,2,3,4,45,5,6};    //使用隐含式的’new’声明数组
Int IQ[];      //声明数组默认为null
Long twod[][]={{23,3},{},{786,67}..}              //二维数组声明,三或多一样。
注:不能用Array做数组名

字符串:
public class Str{
       public static void main(String arg[]){
              int x=0,y=1,z=2;
              String sString="x,y,z";
              System.out.println(sString+x+y+z);     //println只运行string,不运算
              System.out.println(x+y+sString);         //因为x+y在前先运算,后按string处理
       }
}
---------- run java program ----------
x,y,z012
1x,y,z
输出完成 (耗时 0 秒) - 正常终止


五 方法
方法包括:声明和体。
1 方法声明的完整格式:访问说明符 修饰符 返回值 方法名(<span style="red; FONT-FAMILY: 宋体; mso-ascii-fo

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/3303/showart_9711.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP