- 论坛徽章:
- 0
|
面向对象编程
对象:包括数据和方法的包
继承:是把对象的共性的东西继承下来,以发展新的东西。如汽车共有的东西,通过这产生更多其它类型的车
类: 对象是类的实例。某种意义上说类是创建对象的模板。
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 |
|