JAVA面向对象程序设计

第一章 抽象和封装

面向过程的定义:

面向过程的思想就是把一个项目、一件事件按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。

面向对象就是模拟日常行为中的规律运用Java的规范进行设计和开发。

面向对象设计的过程就是抽象的过程,发以下3步来完成:

第一步:发现类

第二部:发现类的属性

第三步:发现类的方法

类主要由属性和行为组成,属性和行为又称为类的成员变量(或者成员属性)和成员方法,统称为类的成员(除此之外,类的成员还包括构造方法、代码块等)。

对象使用是特点:

(1)通过·构造方法来创建对象

(2)通过对象名.属性名的方式调用属性

(3)通过对象名.方法名的方式调用方法

类和对象是面向对象中的两个核心概念。类是对某一类事物的描述,是抽象的,概念上的定义。对象是实际存在的,具体的事物个体。类和对象的关系就好比模具和用模具制作出的物品的关系。

1.2.2 构造方法及其重载

构造方法是一个特殊的方法,没有Hero()方法时,系统会提升一个空的Hero()方法。

构造方法的名称和类名相同,没有返回值类型。构造方法的主要作用就是在创建对象时执行一些初始化操作。

如果一个类中包含两个或两个以上的方法,它们的方法名,方法参数个数或参数类型不同,则称该方法被重载了,这个过程称为方法重载。成员方法和构造方法都可以进行重载。

方法重载的判断依据:

(1)必须在同一个类里;方法名相同;

(2)参数列表(方法形参的个数或参数类型)不同;

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

static可以用来修饰属性、方法和代码块。static修饰的变量属于这个类所有,即由这个类新建的所有对象供用同一个static变量。通常把static修饰的属性和方法称为类属性(类变量)、类方法。

封装:

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

封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问;


封装的优点:

<1.>隐藏类的实现细节;
<2.>方便加入控制语句;
<3.>方便修改实现;
<4.>只能通过规定方法访问数据。

第二章 继承

2.1 继承

相同的属性和方法从父类继承,避免了代码的重复,也方便了日后的修改。

语法:

修饰符 class SubClass extends SuperClass {
    //类定义部分
    }

继承(inheritance)通过extends关键字了实现,其中的SubClass称为子类,SuperClass称为父类、基类或超类。修饰符如果是public,则该类在整个项目中可见;若无public修饰符,则该类只在当前包可见,不可以使用private和protected.

继承是面向对象的三大特性之一。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

在Java中,所有的Java类都直接或间接地继承了java.lang.Object类是所有Java类的祖先。在定义类时,如果没有使用extends关键字,那么这个类直接继承Object类。

ava中,子类可以从父类中继承到哪些“财产”呢?

继承public和protected修饰的属性和方法,无论子类和父类是否在同一个包里。

继承默认权限修饰符(friendly)修饰的属性和方法,但子类和父类必须在同一个包里。

无法继承private修饰的属性和方法。

无法继承父类的构造方法(构造方法是类的,子类只能调用父类构造方法)。

2.2 重写和继承关系中的构造方法

在子类中可以对从父类继承的方法进行重写,称为方法的重写或方法的覆盖。方法重写必须满足如下要求:

重写方法和被重写方法必须具有相同的方法名。

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

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

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

2.2.2 HTML 文档的基本结构

继承条件下的构造方法的调用规则如下:

(1) 如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this显示调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种方法下,有没有“super();”语句,效果都是一样的。

(2) 如果子类得到构造方法中通过super显示调用父类的有参构造方法,则将执行父类相应的构造方法,而不执行父类无参构造方法。

(3) 如果子类的构造方法中通过this调用自身的其他构造方法,则在相应构造方法中应用以上两条规则。

(4) 特别注意的是,如果存在多级继承关系,则在创建一个子类对象时,以上规则会多次向更高一级父类应用,一种到执行顶级父类Odjject类的无参构造方法为止。

2.3 抽象类

2.3.1 抽象类和抽象方法

可以使用Java中抽象类来实现,用abstract来修饰Person类。抽象类不能通过new实例化。

抽象类和抽象方法的特点如下:

(1)抽象类和抽象方法的通过abstract关键字来修饰。

(2)抽象类不能实例化。抽象类中可以没有、有一个或多个抽象方法,甚至全部方法都可以是抽象方法。

(3)抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。子类必须重写所有的抽象方法才能实例化,否则子类还是一个抽象类。

2.4 final 修饰符

2.4.1 final的应用

用final修饰的方法不能被子类重写

用final修饰的变量(包括成员变量和局部变量)将变成常量,只能赋值一次。

第三章  多态

3.2 什么是多态

简单来说多态(polymorphism)是具有表现多种形态的能力的特征。更专业化的说法:同一个实现接口,使用得到实例而执行不同的操作。

3.2.1 子类到父类的转换(向上转型)

int型常量或变量的值赋给double型变量,可以自动进行类型转换。

int i = 5;
double dl = 5;

double型常量或变量的值赋给int型,进行强制类型转换。

double d2 = 3.14;
int a = (int) d2;

子类转换成父类的规则:

将一个父类的引用指向一个子类对象,称为向上转型(upcasting),自动进行类型转换。

通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。

通过父类引用变量无法调用子类特有的方法。

3.2.4 父类到子类的转换(向下转型)

将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。

3.2.5 instanceof运算符

instanceof的语法:

        对象 instanceof类或接口

该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值