java基础 第四章 面向对象

来源:互联网 发布:淘宝v3会员是什么级别 编辑:程序博客网 时间:2024/04/19 01:55

4章 面向对象

PS当使用java.lang包中的东西的时候不用导入包,例如String

 

4.1 面向对象设计原则

1、职责单一

2OCP原则(o:open c:close p:principle)开闭原则

程序对修改为关闭的,对扩展为开放的;

3、依赖倒置:主要针对父类,可以更加灵活的实现

4.2 面向对象的三大特征:

1、封装

2、继承

3、多态

4、抽象

4.3 面向过程与面向对象?

面向过程:对一个流程的整个体系需要非常的熟悉,了解每一个细节,事必躬亲。

面向对象:只针对自己所负责的那一块区域,熟知这一小块区域内的所有东西,其他的东西只管使用不负责内部的结构亦或是生产。

 

类:属性和方法

    对象

 

4.4 定义(是对象的抽象)

class 类名{

//属性和方法.

}

1、考虑有哪些类

2、考虑每个类里面的属性和方法(合适的属性或者方法应该出现在合适类中)

3、类与类的关系

一个文件中可以有多个类,但是只允许有一个是public的,并且该public的类名和文件名一致。

(1)类与类之间的关系

(2)继承

(3)依赖:关系比聚集还要弱  例如:班级和学生

(4)聚合:聚集-关系较弱  例如,球员和教练

   组合-关系较强   例如,人的身体各个部位

4.5 创建对象

类名 对象名 = new类名();

可以通过类加载器通过Class文件创建对象

访问对象的属性:对象名.属性

访问对象的方法:对象名.方法名();

类中的static修饰的静态方法是通过类直接进行调用的;

4.6 构造方法

构造方法的特征:

1、方法名和类名相同

2、没有返回类型,连void也没有

3、构造方法是在new对象的时候进行调用

4、当一个类建好之后默认会有一个没有参数的构造方法。

5、当类里面加了一个带参数的构造方法之后,原来没有参数的构造方法会自动消失,如果需要使用没有参数的构造方法,需要特殊声明

 

4.7 重载(overload)  静态多态

特征:

1、方法名相同

2、参数不同(参数的个数不同或者是参数的类型不同)与返回类型无关。

3、构造方法也可以重载

4.8 this

1this代表的是当前对象

2this只能出现在方法中

3、构造方法使用this互相调用的问题:必须放在构造方法的第一行。

4.9

1、作用:解决类的重名问题

2、包名的规范:将域名倒着写

类中使用包:package 包名;

包的导入:import 包名.类名;

 

4.10 继承

1、继承作用

继承划分了类的层次性,父类代表的是更一般、更泛化的类,而子类则是更为具体、更为细化;继承是实现代码重用、扩展软件功能的重要手段,子类中与父类完全相同的属性和方法不必重写,只需写出新增或改写的内容,这就是说子类可以复用父类的内容,不必一切从零开始。

2、继承关系:什么是一种什么,就是包含,例如 ∈B

3、构造方法:

再实例化子类对象的时候,会调用子类的构造方法。

但是在调用子类构造方法的时候,默认会调用父类的没有参数的构造方法,如果父类没有无参的构造方法,那么会报错。

如果非要调用父类有参数的构造方法,那么需要在子类的构造方法中使用super进行显式调用,但是这行代码必须放在第一行。

4super   在子类中调用父类的方法或者是属性。

 

4.11 重写(overwrite override)  又叫做覆盖  动态多态

1、目的?

对父类的方法实现不满意,在子类中重写一个方法。

2、重写满足的条件:

A、继承关系

B、方法名相同,参数相同,返回类型一致或者兼容

C、重写方法不能使用比被重写方法更严格的访问控制权限

3@Override 可以在编译的时间检查是不是重写

 

4.12 Object

toString()

输出一个对象的时候,默认会调用toString方法,如果对默认的实现不满意,可以自己去实现toString,这种就叫重写。

equals():判断2对象是否相等。

默认的实现就是引用地址是否相等,如果对默认实现不满意,自己重写该方法。

4.13 访问控制符

private:可以修饰方法,属性,内部类,即为除了外部类的所有

default:默认,表现为什么都不写,可以修饰外部类,内部类,方法,属性。(三通)

protected:同private

public:default

1default

2、修饰哪些?

3、修饰了产生的作用

访问权限:

 

 

4.14 抽象类

1、来历

2、有抽象方法的类一定是抽象类,抽象类中不一定有抽象方法。

3、抽象类能不能被实例化?

不能,即为不能被new

4、抽象类中有构造方法吗?

有,若是被继承,那么必须要有一个没有参数的构造方法,若是没有无参数的构造方法,那么会报错。

 

PSabstractnative方法没有实现。底层一般是c或者c++实现的

4.15 final

1、修饰什么?

可以修饰类,属性和方法(三通)

2final修饰类有什么限制?修饰属性的限制?修饰方法的限制?

(1)final修饰的类不能被用于继承,刚好与abstract矛盾,即为两者不能同时出现。

(2)若是修饰属性,那么被修饰的属性一旦赋值就不能被更改,但是可以不在声明的时候赋值,可以通过构造方法的方式来赋值。

(3)若是修饰方法,那么该方法不能被重写,但是可以被重载。

 

4.16 接口

1、接口的作用

为了解决单一继承不能满足需要的问题。

2、定义接口 interface  

3、使用接口 implements

4、接口中定义的内容

接口之中可以定义属性,方法。

5、接口与抽象类的区别?

(1)接口中的方法都是抽象的方法,默认为public abstract;在抽象类中的方法可能有抽象的方法,但也可能没有。

(2)接口中没有变量的说法,所有的定义声明都默认为public static final

(3)接口之中没有构造方法;抽象类中有构造方法,但是两者都不能被实例化,即为都不能new,抽象类的构造方法仅仅是在被继承之后给子类使用。

(4)接口是被实现implements;抽象类是被继承extends

6、接口与类

类可以且仅仅可以继承一个类,可以实现多个接口;接口只能继承接口,但可以继承多个接口。

思考:抽象类与接口的设计?

抽象类是用于被继承的,两者需要拥有包含关系,例如AnimalCat;接口是用于被实现的,两者只要有共同点就可以,例如AirportBird

4.17 多态

基本条件:这三个条件缺一不可

(1)需要有继承或者是实现关系

(2)重写

(3)父类引用子类对象

4.18 static

可以修饰除外部类以外的所有。放在方法区的静态池中。static修饰的属性或是方法通过  类名.属性 或者 类名.方法  就可以直接访问,但同时也可以通过产生对象来访问,但被static修饰的某个属性不再属于某个对象,而是所有同类对象公有的。

static修饰的方法或者是变量被称为  类方法、类变量;其他的无static修饰的被叫做实例方法、实例变量。

0 0
原创粉丝点击