面向对象概述与基本特性

面向对象

1.概述:

  Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。
  它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

为了方便理解,举个例子:

洗衣服:

面向过程面向过程
脱衣–>放进盆–>放洗衣粉–>加水–>浸泡–>一揉–>清洗–>拧干–>晾起来把衣服脱下来–>打开全自动洗衣机–>扔衣服–>按钮–>晾起来
强调步骤强调对象,这里的对象就是洗衣机

特点:
  面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。

2.类和对象

2.1什么是类

:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

   属性:就是该事物的状态信息。
   行为:就是该事物能够做什么。

  举例:小狗
    属性:名字、体重、年龄、颜色。
    行为:走、跑、叫。

2.2什么是对象

对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

举例:小狗。
  属性:5kg、2years、yellow。
  行为:蹦蹦跳跳的跑、撒娇、汪汪叫。

2.3类和对象的关系

  类是对一类事物的描述,是抽象的。对象是一类事物的实例,是具体的。
  类是对象的模板,对象是类的实体。

2.4类的组成

2.4.1 public关键字
  访问修饰符,在定义一个类的时候,访问修饰符的作用是表示这个类被访问的权限,public修饰的类,可以被不同包中不同的类对其进行访问。

2.4.2class关键字
  用来表示一个类定义的开始。

2.4.3类名
  类名必须是一个合法的标识符。

2.4.4类的主体

  成员变量(属性):和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
  成员方法

    修饰符 返回类型 方法名 (参数列表){
    代码 return;
    }

2.5定义一个学生类

public class Student {
//成员变量
String name;//姓名
int age; //年龄
//成员方法1
Public void study() {
System.out.println(“上课,学习,考试”);}
//成员方法2
Public void eat() {
System.out.println(“学习饿了要吃饭”);}
}
}

2.6创建对象

创建对象的格式:
  类名 对象名 = new 类名();

使用类中的成员:
  对象名.成员变量;
  对象名.成员方法();

2.6.1举例:
public class TextStudent {
public static void main(String[] args) {
//创建一个学生类的对象
Student s = new Student();
//直接输出成员变量值,对象名.成员变量
System.out.println(“姓名:”+s.name); //null
System.out.println(“年龄:”+s.age); //0
//给成员变量赋值
s.name = “小明”;
s.age = 18;
//再次输出成员变量的值
System.out.println(“姓名:”+s.name); //小明
System.out.println(“年龄:”+s.age); //18
//调用成员方法
s.study(); // “上课,学习,考试”
s.eat(); // “学习饿了要吃饭”
}
}

3.面向对象的三大特性

封装,继承,多态(如果说四大特性,则将抽象添加进去)
3.1封装

  将对象的属性和实现细节(方法)隐藏起来,若需要访问某个属性,提供公共方法对其访问。
  防止该类的代码和数据被其他类随意访问。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
3.1.1对一个类或对象实现封装,可以实现以下目的:

  a.隐藏类的实现细节
  b.让使用者只能通过事先预定的方法进行访问数据,从而可以在该方法中加入控制逻辑,限制对成员变量的不合理访问。
  c.可进行数据检查,从而有利于保证对象信息的完整性。
  d.便于修改,提高代码的可维护性。
3.1.2为了实现良好的封装,应该从两个方面来考虑:
  a.将对象的成员变量和实现细节隐藏起来,不允许外部直接进行访问。
  b.把方法暴露出来,让方法来控制对这些成员变量进行安全的访问操作

3.2继承

  继承就是子类继承父类的非私有属性和方法。子类可以对父类的方法进行扩展,称为重写(Overriding)。关键字extends。
  重写存在于父类和子类之间,有相同的方法名和参数列表。提高了代码的复用性。

3.2.1特点

  1).在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类。
  2).多个类可以继承一个父类
  3).在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,
  4).在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。

3.3多态

  多态是指不同的对象引用调用同样的方法有不同的表现形式,多态的实现有两种方式:重写和重载。
  一个类中,有相同方法名和不同的参数列表情况为重载,是一个类中多态性的体现。

3.3.1重载
  指在同一类中允许出现一个或以上的同名方法,其参数列表(个数不同,数据类型不同,顺序不同)不同即可。
  与修饰符和返回类型无关。 是一个类中多态性的一种表现。

注意
  参数类型、个数、顺序至少有一个不相同;
  不能重载只有返回值不同的方法名;
  存在于父类和子类、同类中。
3.3.2重写
  子类对父类方法进行扩展称为重写,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
  体现了父类与子类之间的多态性,重写是子类对父类的函数重新定义 。

应用场景
  当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能。

注意
  方法名、参数、返回值相同;
  子类方法不能缩小父类方法的访问权;
  子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常);
  存在于父类和子类之间;
  方法被定义为final不能被重写;

3.4抽象

  抽象是将一类对象的共同特征总结出来构造类的过程。包括数据抽象和行为抽象的过程,抽象只关注对象有哪些属性和行为,并不关注这些行为的细节。

3.4.1抽象方法:
  使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。
定义格式:修饰符 abstract 返回值类型 方法名 (参数列表);

3.4.2抽象类
  如果一个类包含抽象方法,那么该类必须是抽象类。
注意
  抽象方法只能在抽象类里面;
  抽象类和抽象方法必须被abstract修饰;
  抽象类不能创建对象(不能实例化);
  抽象类中可以有非抽象的方法;
  抽象类和类的关系也是继承;
  一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值