博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。
一、概念
一、面向对象技术
面向对象技术是当前计算机技术发展的一个突破,面向对象程序设计是Java语言中最重要的部分,因为任何一个Java程序都是由多个类组成的。
Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。
二、面向对象编程
面向对象编程,是一种通过对象的方式,把现实世界映射到计算机模型的一种编程方法。
三、对象
对象是类的一个实例,有状态和行为。例如,一位老师是一个对象,它的状态有:性别、名字、年龄;行为有:讲课、批作业、吃等。
四、类
类是一个模板,它描述一类对象的行为和状态。
例如,java中定义一个类可以这样写,我来定义一个teacher类。
class Teacher {
public String name;
public int age;
}
二、java对象特点
- 对象具有属性和行为。
- 对象具有变化的状态。
- 对象具有唯一性。
- 对象都是某个类别的实例。
- 一切皆为对象,真实世界中的所有事物都可以视为对象。
三、面向对象的特点
一、继承性
继承是一种由已有的类创建新类的机制,利用继承,可以创建一个具有特殊属性的新类。新类继承了已有类的状态和行为,并可以根据需要增加自己的状态和行为。由继承得到的类称为子类,被继承的类称为父类。Java语言规定,子类只能有一个父类,即不允许多重继承。
继承性是软件重用的一种形式,也是自动实现类中方法和数据共享的机制。如果没有继承,一个系统中的类是封闭的、相互无关的,可能用多个类来实现相似的功能,这就造成了数据和方法的大量重复。引入继承机制,多个类就可以相互关联,新的类由已有的类创建,通过保留父类的属性和行为,并为新类增加新的属性和行为,从而提高了软件的可重用性,缩短了软件的开发时间。
举个例子,假如我们需要一个java老师类,一个python老师类,没有继承的情况下我们需要这样写,代码可重用性很低,再来个大数据老师,我又需要定义一个大数据老师类了。
java老师类:
class JavaTeacher {
public String name;
public int age;
}
python老师类:
class PythonTeacher {
public String name;
public int age;
}
这张图说明了没有继承时类的关系情况,可以看到代码比较臃肿,每次扩展类都需要重复写相同的属性和方法。
java老师类和python老师类中的许多属性和方法相同,这些相同的属性和方法可以提取出来放在一个父类中,这个父类用于被java老师类和python老师类继承。
class Teacher {
public String name;
public int age;
}
程序中的继承性是指子类拥有父类的全部特征和行为,这是类之间的一种关系。Java 只支持单继承。
有了继承性,我们只需要继承teacher类即可,属性可以直接继承父类,如下。
class JavaTeacher extends Teacher {
}
class PythonTeacher extends Teacher {
}
如图,有了继承代码简洁多了,共有的属性和方法都可以放到父类里面,子类继承即可。
二 、封装性
在面向对象编程中,封装(encapsulation)是将对象运行所需的资源封装在程序对象中——基本上,是方法和数据。对象是“公布其接口”。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。
即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
Java 语言的基本封装单位是类。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。Java 提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西,私有的方法数据只能通过该类的成员代码来访问。
总之,实操起来就是控制属性和方法访问级别。
1、访问级别
2、封装优点
-
良好的封装能够减少耦合。
-
类内部的结构可以自由修改。
-
可以对成员变量进行更精确的控制。
-
隐藏信息,实现细节。
三 、多态性
多态是指允许不同类的对象对同一函数调用做出响应。即同一函数调用可以根据发送对象的不同而采用多种不同的行为方式。
多态就是同一个接口,使用不同的实例而执行不同操作。
对象的多态性主要分为两种类型,即向上转型和向下转型。
1、向上转型
向上转型是指用子类对象实例化父类。对象的向上转型是自动完成的,格式如下。
父类 父类对象=子类实例;
2、向下转型
向下转型是指用父类对象实例化子类。向下转型时,必须明确指明要转型的子类类型,具体格式如下。
子类 子类对象=(子类)父类实例;
四、总结
以上就是就是关于java基础之面向对象相关知识,重点介绍了java对象特点,继承性,封装性,多态性相关概念,可以参考一下,觉得不错的话,欢迎点赞、收藏、在看,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。