您的位置:首页 > 移动开发 > Android开发

android基础篇------------java基础(4) (面向对象程序设计)

2013-07-27 16:14 399 查看
面向对象三大特征:封装、继承、多态。

(1)继承:

语法:访问修饰符 class Stu extends Person{

//类定义的主体部分

}

继承的好处:

1. 代码的复用。

2. 为了以后多态的使用。

继承来的东西:

1.      
一般的属性和方法被继承。

2.      构造方法不被继承。

3.      私有的方法不被继承。

4.      
私有的属性被隐藏,可以通过继承来的公有方法访问。

 

对于构造方法来说:

构造方法的第一行不是super(..)就是this(..)

如果一个构造方法第一行不是this(..)或super(..),则默认是对父类无参构造的调用super();

不可能所有的构造都是this(..),至少有一个是super(..);

在子类中使用和父类中同样名字的属性没有意义,对实际开发没有任何好处,所以应该避免。

 

如果子类中有和父类名字相同的方法:

1.      
如果参数不同:构成了重载。

2.      
如果参数相同:构成了重写。

 

重写:覆盖覆写。

1.      
发生在父子类中。

2.      
同名同参同返回。

3.      子类方法的修饰符不能比父类方法的修饰符更封闭。(要么相同,要么更开放)

         private—默认—protected—public。

4.      子类方法抛出的异常不能比父类方法抛出的异常更宽泛。

 

重载:

1.      
发生同一类中

2.      
同名不同参。参数个数不同、参数顺序不同、参数类型不同均构成重载。

3.      
返回值类型没有要求。

this指本类对象。

super用法:指父类对象。

1.      
可以通过super.来访问父类的属性或方法,属性的话注意修饰符的作用范围。

2.      
子类中可以通过super(..)访问父类的构造方法,给属性赋值。

3.      
如果子类构造中没有对本类及父类构造方法的调用,默认有super();

如果一个类没有指定继承其他父类,则它的父类是Object。

对于一个对象来说,如果直接用syso输出该对象,是输出该对象的字符串形式,相当于默认调用对象.toString();

由于Object的toString对我们没有意义,所有我们需要对toString方法进行重写。重写时候注意重写规则。

 

(2)多态:一个对象,多种状态。父类引用指向子类的对象。

 

多态两点基本定理:

1.      
发生多态时,只能调用父类的方法,不能调用子类的方法。

2.      
发生多态时,如果子类中重写了父类的方法,再调用这个方法,调用的是子类重写之后的方法。

 

想使用子类中独有的方法,需要使用强制类型转换:

转换时候注意:

java.lang.ClassCastException:类型转换异常。

instanceof:用于判断左边的对象是否是后面的类型。

注意:强制类型转换没有新建对象,只是换了一个引用。

 

对于静态方法来说,有重写,重写也应该是静态的。静态方法是跟类一致的,没有多态。

 

多态经常用传递的参数的类型和返回类型。

public Person method(Person person){// Teacher Student

       return Teacher/Student/..;

}

练习:

写一个员工管理系统

员工包括:

行政(name、id、sal、Car汽车(id,name))、

技术(name、id、sal、team项目组、comm项目奖金)、

管理(name、id、sal、position、bounds分红0.1)

写一个EmpUtil工具类,提供如下方法:

1) 开除员工:输出:张飞被开除了

2) 计算员工年薪(包括技术人员的项目奖金,管理人员的分红)

 

抽象类:

如果一个类中有抽象方法,则这个类必须定义为抽象类。

对于一个抽象类来说,可以没有任何的抽象方法。

抽象类有构造方法,但是不能通过new+构造方法创建对象。

其构造方法是让子类来调用的。

抽象类使用的时候用多态的形式来使用。

 

final 最终的,不变的。

1.      
可以修饰局部变量,表示该变量的值不能被改变。

2.      
可以修饰属性。必须初始化。有三个地方可以赋初值:直接赋值、语句块、构造方法。

3.      
可以修饰静态属性:不可变的变量(常量)。有两个地方可以:直接赋值、静态语句块。

4.      
可以修饰方法,表示该方法不能被重写。

5.      
可以修饰整个类,表示这个类不能有子类。String

 

接口:interface

可以看做一个特殊的抽象类:

1.      
接口中的属性默认(只能)是public static final修饰的常量。

2.      
接口中的方法默认(只能)是public abstract修饰的抽象方法。

3.      
接口中没有main方法。

4.      
接口中没有构造方法,同样不能new来创建具体对象,只能通过子类来操作。

5.      
java中类和类之间是单继承extends关系,一个子类只能有一个父类。类和接口之间是实现implements关系,一个类可以实现多个接口。接口与接口之间是继承关系,用extends连接,且支持多继承。

6.      
在类强制转换时,类会检测继承关系。而转换为接口不会检测继承(实现)关系。

同一个文件中,只能有一个public修饰的类或接口。

 

整个java学习:

1.      
语言基础:数据类型、程序控制语句、数组、方法等。

2.      
面向对象部分:理解。

3.      
常用类的使用。常用的记住。不常用的会查API。

 

总结:对象—类—继承—父子类—重写—多态。抽象类—接口。

 

修饰符的作用范围:

private:只能本类中访问。

默认的:只能本包中访问。

protected:主要为子类而存在的。在同一包中可见。在不同包的子类的内部,可以通过子类对象访问。但是不能通过父类对象访问,在不同包的非子类内部,也不能通过子类访问。

简单来说:同一包中可见,不同包中的子类内部的子类对象可见。其他都不可见。

public:所有包都可见。

 

修饰符:

 

private
--
protected
public
static
final
abstract
局部变量
 
 
 
 
 
Y
 
属性
Y
Y
Y
Y
Y
Y
 
方法
Y
Y
Y
Y
Y
Y
Y

 
Y
 
Y
 
Y
Y
内部类
Y
Y
Y
Y
Y
Y
Y
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: