SKY外语计算机学习
标题:
面向对象程序设计<上>
[打印本页]
作者:
流氓
时间:
2012-8-17 20:23
标题:
面向对象程序设计<上>
本帖最后由 sky_yx 于 2015-12-30 14:10 编辑
一、面向对象程序理念
面向对象程序设计是一种程序设计理念
核心:对象、类
1、类
类的定义:
[修饰符]class类名[extends 父类名][implements 接口名序列]{
//类体
}
修饰符通常为访问控制符、特征说明符,可以使用的修饰符有public、final、abstract等
class是定义类的关键字,[]中的内容可选
类名符合标识符命名规范、体现类的功能,首字母大写
“extends 父类名”表示该类继承了一个类,父类名指明被继承的类的名称,该类必须是存在的,可以是JDK类库中定义的类,也可以是自定义类。只允许但继承(继承一个父类)
“implements 接口名序列”表示该类所实现的接口,接口名序列指明该类可以实现一个或多个接口,多个接口之间用都好分割
“类体”是类设计的主体部分,一般包括成员变量和成员方法和构造方法
构造方法用于实例化对象,方法名与类名一致,方法五返回值
变量的定义格式:
[修饰符]数据类型 变量名[=初始值];
方法的定义格式:
[修饰符]返回值类型 方法名(参数列表){
//方法体
}
2、对象
对象是类的实例
创建对象:包括声明对象、为对象分配内存空间
声明对象格式:类名 对象名;
为对象分配内存空间要用new运算符和类的构造方法:对象名=new 类名([参数列表]);
实际:类名 对象名=new 类名([参数列表]);
一个类可以创建无数个对象,每个对象占用不同的内存空间,他们之间相互对立,互不影响
使用对象:创建对象的过程就是为对象分配内存空间的过程,对象一旦拥有了自己的内存空间,就可以调用创建类中的方法以及使用自己定义的变量。使用对象必须通过运算符“.”来对对象的变量和方法进行访问。
格式:对象名.变量名;对象名.方法名([实参列表])
对象使用"."运算符访问变量和方法,要注意变量和方法定义的权限修饰符
调用有形参的方法时,需要用实参替换方法中的形参,实参个数、类型、顺序必须与形参一致
类定义中,如果用修饰符static声明类的成员,则该成员成为类成员,或者静态成员,可以直接使用“类名.变量名”和“类名.方法名(实参列表)”进行调用
二、访问控制符、封装、this应用
访问控制符
通过访问控制修饰符来确定对类、类内部的属性和方法的访问控制权限
类的访问控制符有public和默认;属性和方法的访问控制符有4个:public、private、protected、默认
权限修饰符
同一个类
同一个包
不同包的子类
不同包非子类
private
√
default
√
√
protected
√
√
√
public
√
√
√
√
封装
类定义中设计属性由该类自身进行操作,通过声明一些公开的方法提供给其他类调用,从而达到访问属性的目的
通过封装可以:
——隐藏类的实现细节
——迫使用户通过接口访问数据
——增强代码的可维护性
this引用
当方法中传递的参数与类的属性重名的时候,使用this引用来区分类的属性和方法中同名局部变量
方法的返回值是当前类的对象的时候,需要使用this关键字
定义类的时候,如果写了多个构造方法,经常会在一个构造方法的第一条语句使用this()调用它前面定义好的构造方法,以免出现重复代码
三、继承、final应用
继承根据基础类创建具有特殊属性行为的新类。由继承而得到的新类称为子类,被继承的基础类称为父类。子类继承父类的属性和行为并根据需要增加自己的状态行为
子类可以继承父类的属性,包括实例成员变量和类的成员变量
子类可以继承父类除构造方法以外的成员方法,包括实例成员方法和类成员方法
子类可以重定义父类成员
子类不能继承父类的构造方法,因为父类 构造方法创建的是父类对象,子类必须定义自己的构造方法,创建子类自己的对象
子类的上转型对象
父类的引用指向子类的对象
上转型对象不能操作子类新增加的成员变量与成员方法
上转型对象可以操作子类继承或重写的成员变量与方法
如果子类重写父类的某个方法后,通过上转型对象调用的方法一定是调用了重写方法
final修饰符可以修饰类以及类的成员
被final修饰的成为最终类,它不可以再被继承生成子类
被final修饰类的属性称为常量,它的值在程序的执行过程中被初始化后就不可改变
被final修饰的方法成为最终方法,是不可以被当前类的子类重新定义的方法,子类只能使用从父类继承来的被final声明的方法,不可以覆盖它。
四、抽象类、接口
用abstract修饰的类称为抽象类,用abstract修饰的方法称为抽象方法
抽象类不一定包含抽象方法,但有抽象方法的类一定是抽象类
一个类继承了抽象类,实现抽象类中所有的抽象方法,才能进行实例化
若子类没有实现抽象类中所有的抽象方法,则子类也必须声明为抽象类
接口:“纯”抽象类,一组具有特定意义的静态常量和抽象方法的集合
[修饰符]interface 接口名 [extends 父接口列表]{
[修饰符]类型 属性名 = 值;
返回值类型 方法名(参数列表);
}
修饰接口的修饰符只有public和默认修饰符
接口可以多重继承,但接口只能继承接口,不能继承类
属性定义时不需要赋值,是常量,属性的修饰符默认认为final、static
接口中方法必须是抽象方法,修饰符默认为public abstract
接口实现 class 类名 implements 接口名[,接口名...........]
implements是一个类实现接口的关键字,一个类可以 实现多个接口,接口之间用逗号分隔
如果实现接口的类不是abstract修饰的抽象类,则在类体中必须实现接口列表中所有接口的抽象方法
一个类在实现接口的抽象方法时,必须使用public修饰符,否则编译错误
接口回调:用接口声明的句柄指向实现接口的类所创建的对象,那么该句柄就可以调用接口中的方法
更多内容待续(包含JavaSE、JavaWeb、JavaEE)。。。。。。
码字可不是一件容易的事啊[吃饭去鸟].....(((((ヾ( o=^?ェ?)o ┏━┓ ,然后弄继续代码
作者:
sky7987
时间:
2012-8-18 02:03
本帖最后由 sky_yx 于 2015-12-30 14:10 编辑
来点高级的。。。。。。。。。。。。。。。
作者:
流氓
时间:
2012-8-18 12:09
本帖最后由 sky_yx 于 2015-12-30 14:10 编辑
来点高级的。。。。。。。。。。。。。。。[/quote]
呵呵。。。。。。慢慢来吧
基础弄不好 高级的又肿么弄呢
作者:
sky7987
时间:
2012-8-23 21:17
本帖最后由 sky_yx 于 2015-12-30 14:10 编辑
晕了 。。
我还是新手 我纠结
欢迎光临 SKY外语计算机学习 (http://www.skywj.com/)
Powered by Discuz! X2.5