java学习系列(三)--面向对象编程

上一篇 / 下一篇  2013-01-18 17:13:10 / 个人分类:java入门

一、面向对象的基本思想
从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式
1.考虑这个问题里面应该有哪些个类哪些个对象
2.考虑这些个类里面的每种类每种对象具有哪些个属性和方法
3.考虑类和类之间具备的关系
二、对象和类的概念
对象用计算机语言对问题域中事物的描述,对象通过属性和方法来分别对应事物所具有的静态属性和动态属性
类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象具有的静态和动态属性
类可以看成一类对象的模版,对象可以看成该类的一个具体实例
三、关系
1.关联关系
2.继承关系
3.聚合关系(整体和部分)
4.实现关系
四、java和面向对象
1.必须首先定义类,才有对象
2.万事万物皆对象
3.对象可以看成是静态属性(成员变量) 和动态属性(方法)的封装体
五、类的定义
1.类的定义主要有两方面组成--成员变量和方法
2.成员变量:先声明,可以初始化,也可以不初始化;
3.局部变量:先声明,必须初始化
4.引用变量:占用2个字节
5.new出来的东西都存放在内存的stack中
6.如何在内存中区分类和对象
类是静态的概念,代码区中
对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)
7.对象的创建和使用
a.必须使用new关键字创建对象
b.使用对象(引用).成员变量或来引用的成员变量
c.使用对象(引用).方法来调用对象的方法
d.同一类的每个对象有不同的成员变量存储空间
e.同一类的每个对象共享该类的方法,非静态方法是针对每个对象进行调用
六、构造方法(构造函数)
1.使用new+构造方法 创建一个新的对象
2.构造函数是定义在java类中的一个用来初始化对象的函数
3.构造函数和类同名,且没有返回值
4.当没有指定构造函数时,编译器为类自动添加构造函数
七、类的约定俗成的命名规则
1.类名首字母大写
2.变量名和方法名的首字母小写
3.运用驼峰标识
八、方法的重载
1.方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数来选择对应的方法
2.与普通方法一样,构造方法也可以重载
3.this 关键字
*this可以看作是一个变量,一般在方法里面,是执行自身对象的引用
*在类的方法定义中使用的this关键字代表使用该方法的对象的引用
*有时使用this可以处理方法中成员变量和参数重名的情况
*当你确定不了一个参数到底它是指向哪个变量,找离它最近的声明
4.static关键字
*在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份
*方法是针对某一个对象来调用的
*用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
*可以通过对象引用或类名(不需要实例化)访问静态变量
九、package和import语句
1.为了解决类的命名冲突问题,java引入包的机制,提供类的多重类命名空间
*package作为java源文件的第一条语句,指明该文件中定义的类所在的包(若缺省该语句,则为无名包)
*如果你要把一个类放在包里面,第一句话写package,package后面想跟多少层包就跟多少层包,不过注意点是,你编译出来的这个class文件,必须位于正确的目录下面,正确的目录是指和包的层次完全一致。
*如果你想在另外一个类里面使用我这个类,必须将这个类名字写全了 。访问位于同一个包下的类不需要引用
*必须class文件的最上层包的父目录位于classpath下
*执行一个类需要写全包名
2.J2SDK中主要的包介绍
*java.lang--包含一些java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能;*java.lang里面的类除了String不需要引用,其他的类都需要引用
*java.awt--包含了构成抽象窗口工具集的多个类,这些类被用来构建和管理应用程序的图形用户界面
*java.net--包含执行与网络相关的操作的类
*java.io--包含能提供多种输入输出功能的类
*java.util--包含一些实用工具类,如定义系统特性,使用与日期日历相关的函数
十、类的继承与权限控制
1.继承
java中使用extends关键字实现类的继承机制
*通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)
*java只支持单继承,不允许多继承;一个子类只能有一个基类,一个基类可以派生出多个子类
2.访问控制
java权限修饰符有四种:
private:最严格的修饰符 类内部可以访问,同一个包、子类、任何地方不能访问
default:类内部、同一个包可以访问,子类、任何地方不能访问
protected:类内部、同一个包、子类可以访问,任何地方不能访问
public:类内部、同一个包、子类、任何地方都可以访问
*对于class的权限修饰只可以用public和default,default类只可以被同一个包内部的类访问
十一、方法的重写
1.在子类中可以根据需要对从基类中继承来的方法进行重写
2.重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型
3.重写方法不能使用比被重写方法更严格的访问权限
4.重写的时候,最好的办法,就是copy父类中要重写的方法
十二、super关键字
1.java类中使用super来引用当前对象的基类的对象
十三、继承中的构造方法
1.子类的构造的过程中必须调用其基类的构造方法
2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法;使用this(argument_list)调用本类的另外的构造方法;如果调用super,必须写在子类构造方法的第一行;
3.如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参数的构造方法
4.如果子类构造方法中既没有显式调用基类构造方法,而基类中没有无参数的构造方法,则编译出错
十四、Object类
1.Object类是所有java类的根基类
2.如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
3.toString方法
Object类中定义有public String toString()方法,其返回值为String类型,描述当前对象的有关信息
在进行String与其类型数据的连接操作时,将自动调用该对象类的toString()方法
可以根据需要在用户自定义类型中重写toString()方法
4.哈希编码独立无二的代表一个对象,并且通过哈希编码找到这个对象
5.equals方法
十五、对象转型(casting)
1.一个基类的引用类型变量可以指向其子类的对象
2.一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)
3.可以使用引用变量instanceof类名来判断该引用型变量所指向的对象是否属于该类和该类的子类
4.子类的对象可以当作基类的对象来使用称做向上转型(upcasting),反之称为向下转型(downcasting)
十六、动态绑定和多态
1.动态绑定是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法
2.帮助程序扩展性达到极致
3.多态存在的三个条件
要有继承
要有重写
父类引用指向子类对象
十七、抽象类
1.用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法;
2.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写
3.抽象类不能被实例化
4.抽象方法只需声明,而不需实现
十八、final关键字
1.final的变量的值不能被改变
  包括final的成员变量,final的局部变量(形参)
2.final的方法不能被重写
3.final的类不能被继承
十九、接口
定义:接口(interface)是抽象方法和常量值的定义的集合
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现
1.多个无关的类可以实现同一个接口
2.一个类可以实现多个无关的接口
3.与继承关系类似,接口与实现类之间存在多态性


*接口特性
1.接口可以实现多重继承
2.接口中声明的属性默认为public static final的,也只能是public static final的
3.接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的
4.接口可以继承其他的接口,并添加新的属性和抽象方法


TAG:

 

评分:0

我来说两句

Open Toolbar