---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
学习面向对象
第一阶段,明白面向对象的基本概念。
首先我们要知道它是什么,它是一种思想。这种思想较从前有极大的不同之处。比如c语言,我们叫它面向过程语言,为什么这么说。是因为
它的特质是逢山开路,遇水架桥。也就是说处理问题侧重于过程,较为繁琐。而Java语言是面向对象语言。面向对象,也是面向结果的一种语言,
将一些繁琐的问题变的简洁明了。
为什么称Java为面向对象语言呢?因为面向对象是相对于面向过程而言的。
面向过程:关注的是做某件事情的过程。
面向对象:关注事情的结果。面向对象思想特点:
A:是一种符合人们思考习惯的思想的语言。
B:将复杂的问题简单化。
C:把我们从以前的执行者变成指挥者。
举例:
例如旅游:
面向过程:查路线--买机票--选酒店--...--看景点...--回家。
——这个过程中我们需要不断的处理中间的各个环节产生的问题,最终完成了一趟旅行,繁琐!
面向对象:找个旅行社。
——而面向对象思想,将问题交给对象去解决。
再例如吃饭:——面向过程:买菜--洗菜--做菜--吃菜--刷碗--拖地...
——面向对象:去饭店--点菜--吃
在对面向对象有了一个模糊的认识以后,要开始学着应用面向对象。
面向对象的成立
面向对象:如何能做到面向对象呢?(UML 统一建模语言)
在分析问题的时候,采用如下方案:
1:分析有哪些类。
2:分析类有哪些内容。
3:分析类与类的关系。
学到这里,我们知道了面向对象是建立在类之上,类是什么呢?
类是通过现实世界事物的体现。通过两点方式体现出来:
1特征描述,描述有哪些属性。例如一个人,有其姓名,年龄等基本信息。
2行为描述,描述有哪些功能,或者说能做什么,例如人,可以睡觉行走,可以奔跑进食等。
而如何用Java语言来体现,就得把现实世界的事物通过Java的内容给描述出来: 类事物的特征描述——成员变量(属性,字段)
事物的行为描述——成员方法(函数)
类与对象的关系
类:是对生活中一类事物的抽象
学生类
对象:就是该类事物的具体存在
张三
Java中代码的具体体现
/**
需求:定义一个汽车类,要求具备汽车的品牌,颜色,价格,并且让汽车行驶起来(即打印出每个汽车的颜色、价格)
思路:
1创建一个汽车类
2在main方法中创建一个汽车对象,并实现其功能
*/
class Car //这是汽车类,一个汽车的抽象
{
String name;
String color;
int price;
Car(String name,String color,int price)
{
this.name = name;
this.color = color;
this.price=price;
System.out.println(name + "是一辆" + color + ",价格是:" + nums);
}
public void run (Car c)
{
System.out.println();
}
}
class CarDemo //实例化一个汽车
{
public static void main(String[] args)
{
Car c = new Car("volovo","黑色的",6000);
c.run();
}
}
上述的例子中,简单描述了一个类的产生。
面向对象的特点
1:封装
定义:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
优点:1将变化隔离
2提高重用性
3便于使用
4提高安全性
封装的原则:将不需要对外公开的内容都隐藏起来,属性隐藏,提供公共方法进行访问。
注意:私有仅仅是封装的一种体现形式,包也是封装的一种表现形式,而之所以提供对外访问的方式,是因为可以对访问方式添加一些逻辑判断,对访问的数据进行
一些操作,提高了代码的健壮性(鲁棒性)。
2:继承
定义:把多个类中的共性的内容进行抽取,以后创建类的时候, 不需要从头开始,可以直接和抽取的类产生一个关系, 这个关系就是继承。
抽取出来的形成的类就是父类,也叫基类和超类。而继承它的就的子类,也叫派生类。
优点: 1提高了代码的复用性。
2让类与类之间产生了关系,是多态的前提。
继承特点: 1 Java中继承只支持单继承。
2 Java中继承支持多(层)重继承。
继承格式: 父类:class FuClass{}
子类:class ZiClass extends FuClass{}
成员特点: 1 成员变量:在子类方法中使用一个变量的步骤。
a:在子类局部范围找,有就使用
b:接着在子类成员范围找,有就使用
c:再接着在父类的成员范围找,有就使用
d:报错。
2 构造方法:子类的构造方法执行的时候,会首先去执行父类的构造方法。因为子类要使用父类的内容,所有需要首先对父类的内容进行初始化。
注意:当父类没有无参构造的时候,子类要么用super调用父类带参数构造,要么使用this调用本身的其构造。
Object类: 是所有类的超类,任何类都直接或者间接继承自Object类。
3 成员方法: 当子类出现和父类一模一样的方法时,父类的方法就会被子类覆盖调用。这种情况被称为方法的重写。(覆盖,重写,复写)。
注意: a:父类私有的方法不能被重写。
b:子类重写父类方法时,访问权限一定要大于等于父类权限。
c:静态只能重写静态。(不属于对象的范畴)
用子类对象调用方法时:
a:在子类中找方法,有就使用。
b:在父类中找方法,有就使用。
c:报错。
this和super的区别: this:当前类的对象的引用。
super:父类的存储空间标识。
作用: this的使用: this(...);
this.成员变量;
this.成员方法();
super的使用:super(...);
super.成员变量
super.成员方法() ;
3:多态
定义:同一个对象,在不同时刻表现出来的不同状态。
多态的前提:1 有继承或者实现关系。
2 有方法的重写。
3 有父类或者接口指向子类引用对象。
多态中的成员使用特点:Fu f = new Zi();
System.out.println(f.num);
f.show();
成员变量特点:编译看左边,运行看左边。
成员方法的特点:编译看左边,运行看右边。
多态的转型:向上转型:把子类对象赋值给父类(接口)的引用
向下转型:把父类(接口)的引用强制转换成子类对象
多态的好处和弊端:
好处:提高的程序的可维护性和可扩展性。
开闭原则:对扩展开放,对修改关闭。
弊端:不能使用子类特有的内容。
要想使用,要么向下转型,要么重新创建子类对象。
多态的三种形式: 1 具体的类多态。
2 抽象类多态。
3 接口多态。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.youkuaiyun.com