---------------------- android培训、java培训、期待与您交流! ----------------------
一:面向对象思想
(1)面向对象与面向过程区别和联系。
A:区别:
**面向过程关注执行过程,这个时候我们是执行者。
**面向对象关注的是最终功能,这个时候我们是指挥者。
B:联系:
**面向对象是基于面向过程的。
(2)面向对象
A:面向对象思想的特点。
**是符合人们思考习惯的一种思想。
***编程思想就是来源于生活。
**将复杂的问题简单化了。
**把我们从执行者变成了指挥者。
B:举例
**找个保姆帮我洗衣服做饭,那个保姆就是我面向的一个对象,我在调用他洗衣服做饭的功能
**去饭店吃饭的时候我叫服务员帮我写菜单,那个服务员就是我面向的一个对象,我在调用他写菜单的功能
**去旅游的时候,导游就是我们面向的一个对象,我们在调用他解说和指路的功能
(3)面向对象思考问题的方式
找对象,完成功能。
如果对象不存在,自己就造一个对象。
(4)面向对象的三大特性
A:封装
B:继承
C:多态
二:封装
(1)概念 把实现细节隐藏,提供公共的访问方法。
机箱和主板的例子。
(2)好处
A:将变化隔离。
B:便于使用。
C:提高重用性。
D:提高安全性。
(3)private关键字
A:private
**私有的
B:特点
**是一个权限修饰符。
**可以修饰成员,被修饰的成员只能在本类中访问。
C:一般用法
**一般用于将成员变量私有,提供公共的get,set方法进行访问。
自定义类 一般格式:
class Student
{
private String name;
public void setName(String n)
{
name = n;
}
public String getName()
{
return name;
}
}
三:继承
(1)概述
A:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,
那么多个类无需再定义这些属性和行为,只要继承那个类即可.
B:多个类可以称为子类,单独这个类称为父类或者超类.
C:子类可以直接访问父类中的非私有的属性和行为.
D:通过extends关键字让类与类之间产生继承关系.
(2)特点
A:继承的出现提高了代码的复用性.
B:继承的出现让类与类之间产生了关系,提高了多态的前提.
(3)举例
A:狗和猫都是动物的一种,所以就可以把狗和猫的共有的动物的属性抽取出来
把狗和猫分别继承动物,在它们自己的类中定义特有的属性和行为,就不用
定义公有的动物属性和行为(方法)
这样就是继承的关系了.
(4)研究继承后 Fu和Zi的关系。
A:成员变量
1:子类直接继承了本身没有的成员变量。
2:当子类中有和父类同名的成员变量时。在方法中打印的是子类自己的。
3:当子类方法中有局部变量和成员变量同名,在方法中打印的是局部变量。
简单说:在子类方法中打印一个变量:
先在局部范围找,其次在本类中找,最后在父类中找。如果找到,立马输出。
如果找不到,就报错。
为了访问父类的内容,java提供了一个关键字super。
super:父类空间的一个引用。
B:成员方法的特点
继承中的成员方法的特点:
1:父类的中的方法和子类中没有同名的情况。子类就把父类的方法直接继承过来使用。
2:子类中存在了和父类同名的方法?怎么办呢?
如果子类中有和父类同名的方法,就会去调用子类中的方法。
而且这种现象在java中称为重写(override),复写,覆盖。
同时回顾一下,我们前面讲过一种东西叫重载(overload)。
重载与重写的区别:
重载:
**在同一个类中。
**方法名相同,参数列表不同。
重写:
**存在于子父类当中。
**方法的声明一致。(名称和参数)
**子类的访问权限不能低于父类的访问权限。
简单说:用子类对象调用方法时,首先子子类中找,其次在父类中找。如果找到,会直接操作。
如果找不到,就报错。
3:父类静态方法只能被子类静态方法重写。
一般不会出现这种情况。
注意:
**父类中的私有方法不可以被覆盖。
**在子类覆盖方法中,要想继续使用被覆盖的父类方法可以通过
super.方法名获取。
格式:super.方法名();
C:构造方法
子类中所有的构造函数默认都会访问父类中空参数的构造函数
因为每一个构造函数的第一行都有一条默认的语句super();如果给定super(a);里面是带参的,那么就没有默认的了.
子类会具备父类中的数据,所以要先明确父类是如何对这些数据初始化的。
当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super语句指定要访问的构造函数。
(5)什么时候使用继承?
A:当某个事物是另一个事物的一种的时候,就用继承。
B:如果判断一个事物是另一个事物的一种?
对于A类和B类。
我们可以假设它们存在着继承关系。比如:A extends B
如果A是B的一种,那么继承成立。他们就具有继承关系。否则,继承关系不成立。
(6)super代表父类的内存空间的标识。
A:当子父类出现同名成员时,可以用super进行区分
B:子类要调用父类构造函数时,可以使用super语句。
(7)1,:覆盖:
(1)子类中出现与父类一模一样的方法时,就会调用子类中的方法,
会出现覆盖操作,也称为重写或者复写。
(2)父类中的私有方法不可以被覆盖。
2,在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数名获取。
3,覆盖注意事项:
(1)覆盖时,子类方法权限一定要大于等于父类方法权限
(2)静态只能覆盖静态。
4,覆盖的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,
这样,即沿袭了父类的功能,又定义了子类特有的内容
三:多态
(1)概述 不同情况下,事物的多种形态。
水(固态,液态,汽态)
狗(动物,狗,犬科)
**静态多态(重载)
**动态多态(对象多态)
(2)特点
在代码中体现是:父类引用指向子类对象。
Fu f = new Zi();
多态前提:
**类与类(接口)存在着继承(实现)的关系
**要有重写
**父类(接口)引用指向子类对象
(3)好处
提高了代码的扩展性,便于后期的维护。
(4)弊端
前期不能考虑到后面有哪些对象,所以我们使用多态可以解决这个问题。
但是,父类不能使用子类中特有的方法。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima