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:所有包都可见。
修饰符:
(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 |
相关文章推荐
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
- Java基础笔记整理---【07】面向对象程序设计-类和对象
- 理解Java面向对象的程序设计思想-Java基础-Java-编程开发
- 第四章 JAVA面向对象程序设计基础知识--知识回顾与疑点解析
- Java复习总结:Java面向对象程序设计 —面向对象(基础篇)
- Java4Android-面向对象基础2
- Java4Android-面向对象基础3
- android入门学习-java面向对象基础
- Java-面向对象(基础篇)--面向对象基础
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
- Java 面向对象程序设计的基础知识
- java基础系列之三:java的面向对象程序设计
- Java基础笔记整理---【08】面向对象程序设计-包、继承、访问权限
- 黑马程序员.Android攻城狮.JAVA基础.1.3.Java面向对象
- 面向对象基础 (java4 Android 12,13,14,15集)
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
- Java4Android-面向对象基础1
- Java基础复习---面向对象程序设计
- Java4Android之面向对象基础篇
- Android探索之旅 | 面向对象和Java基础