使用java实现面向对象编程

  • 格式:doc
  • 大小:304.00 KB
  • 文档页数:35

使用java实现面向对象编程第一章、抽象和封装1.为什么使用面向对象1.面向对象就是采用“现实模拟”的方法设计和开发程序。

面向对象技术利用“面向对象的思想”去描述“面向对象的世界”,实现了虚拟世界和现实世界的一致性,符合人们的思维习惯,使客户和软件设计开发人员之间、软件设计开发人员内部交流更加顺畅,同时有代码重用性高、可靠性高等优点,大大提高了软件尤其是大型软件的设计和开发效率。

2.面向过程和面向对象有什么区别?面向过程的核心是函数,以功能为中心,实现了函数级别的代码重用,面向对象的核心是封装了属性和方法(行为)的类,以数据为中心,实现了类级别的代码重用,面向对象因为采用了类,所以具有继承和多态特性,可以进一步重用代码和简化编程,而面向过程中没有继承和多态特性。

2.使用面向对象进行程序设计1.面向对策设计的过程就是抽象的过程,分为3个步骤来完成。

第一步:发现类(一般为名词)第二步:发现类的属性(一般为名词)第三步:发现类的方法(一般为动词)2.抽象时遵循的原则如下:属性、方法的设置是为了解决业务问题。

关注主要属性、方法、如没有必要,勿增加额外的类、属性和方法。

通过创建对象实现领养宠物功能3.创建对象的三种方式:1、使用new关键字。

2、反射。

3、克隆。

4.面向对象中的两个核心概念:类(Class)和对象(Object)是面向对象中的两个核心概念。

类是对某一类事物的描述,是抽象的、概念上的定义。

对象是实际存在的、具体的事物个体。

5.类主要有属性和行为组成:属性和行为又称为类的成员变量(或者成员属性)和成员方法,统称为类的成员(除此之外,类的成员还包括构造方法、代码块等)6.常量:用来存储不变的数据,常量在程序运行过程中不会发生变化,只能被引用,不能被重新赋值,也就是值能在定义是修改其值。

Java中的常量用final关键字修饰,并且常量名通常都大写。

为了方便调用,可以使用sstatic修饰,(推荐使用)。

如:final String SEX_MALE=”Q仔”;final String SEX_FEMALE=”Q妹”;7.类名、属性名、方法名以及常量名的命名规范:❖类名由一个或几个单词组成,每个单词的第一个字母大写,如:Dog、StringBuffer ❖属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其它单词首字母大写。

❖如health、stuName、println() 、getMessage()。

❖构造方法名是唯一可以大写的,如Penguin()。

❖常量名有一个或者几个单词组成,所有字母大写,如PI\SEX_MALE。

常用的快捷键:封装:Alt+Shift+S,R无参构造方法:Alt+Shift+S,C有参构造方法:Alt+Shift+S,O3.构造方法及其重载1.构造方法的特点和主要作用:特点就是,方法名和类名相同,没有返回值。

主要作用就是创建对象是执行一些初始化操作,如给成员变量赋初值。

2.构造方法的重载:在同一个类中,方法名相同,参数列表不同。

如下列,有参构造方法中的示例:在使用this调用自身的其它构造方法时,只能作为第一条语句。

方法重载:如果同一个类中包含两个或两个以上的方法,它们的方法名相同,方法参数个数或参数类型不同,则称该方法被重载了,这个过程称为方法重载。

方法重载的判断依据:❖必须在同一个类里。

❖方法名相同。

❖参数列表(方法参数的个数或参数类型)不同。

❖与方法返回值和方法修饰符没有任何关系。

无参构造方法:/*** 无参构造方法* */public Penguin(){ //加上返回值void的构造方法不在是构造方法了而是与构造方法同名的成员方法name="男男";love=20;sex="Q妹";System.out.println("执行构造方法");}有参构造方法:/*** 两个参数的构造方法*/public Penguin(String name,String sex){=name;this.sex=sex;}/*** 四个参数的构造方法*/public Penguin(String name,int heath,int love,String sex){ =name;this.heath=heath;this.love=love;this.sex=sex;}4.Static修饰符Static 可以用来修饰属性、方法和代码块。

static修饰的变量属于这个类所有,1.结论:❖在加载类的过程中,完成静态变量的内存分配,在执行静态块,两者是在创建对象之前执行的。

❖类属性、类方法可以通过类名和对象名访问,实例属性、实例方法只能通过对象名访问。

❖(静态方法中不能使用this和super关键字。

)❖类方法只能访问类属性和其他类方法。

❖在方法里不可以定义static变量,也就是说,类变量不能是局部变量。

5.封装:封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类提供的方法实现对隐藏信息的操作和访问。

1.封装的具体步骤:修改属性的可见性来限制属性的访问;为每个属性创建一对赋值(getter)和取值(setter)方法,用于对这些属性的存取;在赋值方法中,加入属性的存取控制语句。

2.封装的好处:隐藏类的实现细节;让使用着只能通过程序规定的方法来访问数据;可以方便地加入存取控制语句,限制不合理操作。

3.This关键字:This关键字是对一个对象的默认引用。

在每个实例方法内部,都有一个this引用变量,指向调用这个方法的对象。

This不能调用类变量和类方法,也不能调用局部变量。

使用this调用成员变量,解决成员变量和局部变量的同名冲突。

public Pet(String name){=name; //成员变量和局部变量同名,必须使用this}使用this调用成员方法。

public void play(){health=health=n;this.print(); //this可以省略,直接调用print();}使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句。

int love,String sex){this.love=love;}第二章、继承1.继承(Inheritence)上一章中根据需求抽象出了Dog类和Penguin类,在这两个类中有许多相同的属性和方法,如Name、health和love属性及相关的getter方法,还有print()方法。

这样设计的不足之处主要表现在两方面:一是代码重复;二是如果要修改,则两个类都要修改,如果涉及的类较多,修改量就很大,如果有效地解决这个问题呢?2.其实我们只要把两个类中相同的属性和方法提取出来单独放在一个类里面,保留住特有的属性和方法;这就是需要继承了。

2.语法:修饰符 Subclass extends Superclass{//类定义部分}通过extends关键字来实现,其中的Subclass称为子类,SuperClass称为父类、基类或超类。

修饰父如果public,则该类在整个项目中可见;若无public修饰则该类只在当前包可见;不可以使用private和protected修饰类继承是面向对象的三大特性之一,是Java中实现代码重用的重要手段之一。

Java 中只支持单继承,即每个类只能有一个直父类。

继承表达的是is a 的关系。

或者说是一种特殊和一般的关系,如Dog is a Pet。

在Java中,所有的Java类都直接或间接地继承ng.Object类。

Object 类是Java类的祖先。

在定义一个类时,如果没有使用extends关键字,那么这个类直接继承Object类。

ng.Object类的方法2.重写和继承关系中的构造方法1.子类重写父类方法1.在子类的构造方法执行前,必须先执行父类的构造方法。

❖如果父类没有无参构造方法,子类必须指定调用其他构造方法❖默认总是调用父类的无参构造方法。

❖所以,如果父类没有提供无参构造方法,那么程序员必须手动的根据需要在代码中显式调用父类的某个带参的构造方法。

(调用必须写在第一句)2.方法的重写在子类中可以根据需求对从父类的方法进行重新编写,称为方法的重写或方法的覆盖(overriding)。

方法重写必须满足的要求:重写方法和被重写方法必须具有相同的方法名。

重写方法和重写方法必须具有相同的参数列表。

重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类。

重写方法不能缩小被重写方法的访问权限。

3.重载和重写的区别和联系:重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符无关。

重写涉及的是子类和父类之间的同名方法,要求方法名相、参数列表相同、返回值类型相同(或是其子类)、访问修饰符不能严于父类。

4.Super的使用super代表对当前对象的直接父类的默认引用。

在子类中可以通过super关键字访问父类的成员。

Super必须出现在子类(子类的方法和构造方法)中,而不是其他位置。

可以访问父类的成员,如父类的属性、方法、构造方法。

注意访问权限的限制,如无法通过super访问private成员。

例如,在Dog类中可以通过如下语句来访问父类成员(以下父类成员和构造方法都不是private权限)。

; //访问直接父类的name属性Super/print(); //访问直接父类的print()方法Super(name); //访问直接父类的对应构造方法,只能出现在构造方法中3.继承关系中的构造方法1.继承条件下构造方法的调用规则。

❖如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this 显示调用自身的其他构造方法,则系统会默认调用父类的无参构造方法。

在这种情况下,有没有”super()”;语句,效果都是一样的。

❖如果子类的构造方法中通过super显示调用父类的有参构造方法,则在相应构造方法中应用以上两条规则。

❖特别注意的是,如果存在多级关系,则在创建一个子类对像时,以上规则会多次向更高一级父类应用,一直执行顶级父类Object类的无参构造方法为止。

❖在构造方法中付过有this语句或super语句出现,则只能是第一条语句。

❖在一个构造方法中不允许同时出现使用this和super语句调用构造方法(否则就有两条第一条语句)。

❖在类的方法中不允许出现this或super关键字。

❖在示例方法中,this和super语句不要求是第一条语句,可以共存。

2.继承关系中构造方法的执行顺序4.抽象类1.抽象类和抽象方法的特点(1)抽象类和抽象分都通过abstract关键字来修饰。