一、面向对象
1.面向对象是在程序中使用对象来映射现实中的事物,对象的关系来描述事物之间的联系。
2.面向对象的特点:
封装性:封装是将类的某些信息隐藏在类内部,不让外部程序去访问,需要通过这个类提供的方法来实现对隐藏信息的操作和访问。封装也是面向对象的核心思想,把类的属性和行为封装起来,不给外界知道具体的细节。
继承性:继承是类与类的一种关系,而不是对象在继承。子类从父类继承,子类中就拥有父类中定义的所有成员,只是类的继承,我们创建对象,对象与对象是毫无关系的。满足继承是一种”is a”关系,凡是满足”is a”关系的类就可以拥有继承的关系,当A类是1个B类的时候,那么A类就可以从B类继承,例如“猫”继承“动物”,动物类是猫类的父类或基类,猫类是动物类的子类或派生类。
多态性:多态就是对象的多种形态。在程序中可以出现重名现象,它指在一个类中定义的方法和属性被其他类继承,它们就有不同的数据类型或表现出不同的行为,使得同一个属性和方法在不同类有不同的意义。
二、类的定义
1.什么是类?
物以类聚,人以群分。类是对一群具有相同特征或行为的事物的1个统称。是抽象的也不能直接使用。如果非要使用类的话呢?只能去找这一类事物中的一个具体存在,然后使用这个具体存在。
2.类中可以定义成员变量和成员方法,其中成员变量用来描述对象的特征,也叫做属性。成员方法用来描述对象的行为,称作方法。
3.如何定义一个类
- class Person{
- int age;//定义int类型变量age
- //定义speak()方法
- void speak(){
- System.out.print("我今年"+age+"岁");
- }
- }
首先是定义了一个Person类,Person是类名,age是成员变量,speak()成员方法。在成员方法可以访问成员变量的age。
4.定义在类中的变量是成员变量,定义在方法中的变量局部变量。假设在某一个方法中定义局部变量跟成员变量的名是一样的,这时方法访问的是局部变量而不是成员变量。
例如:
- class Person{
- int age=3;//成员变量
- //定义speak()方法
- void speak(){
- int age=10;//局部变量
- System.out.print("我今年"+age+"岁");
- }
- }
- public class p13 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Person p1=new Person();
- p1.speak();
- }
- }
输出的结果是:
- 我今年10岁
三、对象的创建和使用
1.什么是对象
对象是现实生活中的一个个具体存在.。看得见、摸的着。拿过来就可以直接使用。
2.创建对象的格式
- 类名 对象名称=new 类名();
例如:
- Person p=new Person();
上面代码中”new Person()”是创建Person类的一个实例对象,”Person p”是Person类的变量p。“=”表示Person对象在内存中的地址赋值给变量p。这个变量p就有了对象的引用。
3.创建对象后,可以通过对象的引用来访问对象的所有成员。
访问对象成员的格式
- 对象引用.对象成员
4.如何访问对象成员的案例
- class Person{
- int age;//成员变量
- //定义speak()方法
- void speak(){
- System.out.println("我叫张三,今年"+age+"岁");
- }
- }
- public class p13 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //创建两个Person的对象
- Person p1=new Person();//创建第一个Person对象
- p1.age=8;//age属性赋值
- p1.speak();//调用对象的方法
- Person p2=new Person();//创建第二个Person对象
- p2.speak();//调用对象的方法
- }
- }
输出的结果是:
- 我叫张三,今年8岁
- 我叫张三,今年0岁
四、总结
本文主要介绍了面向对象概念,面向对象的三个特点封装性、继承性、多态性。类的定义和创建对象与使用。详细的介绍了怎么去定义一个类,通过案例来理解怎么去定义的。对象的创建与使用介绍了使用的格式,通过创建对象后,可以通过对象的引用来访问对象的成员。希望大家通过本文的学习,对你有所帮助!
本文转载自微信公众号「Java进阶学习交流」,可以通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。
在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多...
本文转载自微信公众号「bugstack虫洞栈」,作者小傅哥 。转载本文请联系bugstack...
背景 我们知道 如果在Kubernetes中支持GPU设备调度 需要做如下的工作 节点上安装...
近几年,互联网行业蓬勃发展,在互联网浪潮的冲击下,互联网创业已成为一种比较...
溢价 域名 的续费价格如何?通常来说,因为溢价域名的价值高于普通域名,所以溢...
基本介绍 给定 n 个权值作为 n 个叶子节点,构造一颗二叉树,若该树的带权路径长...
本文转载自公众号读芯术(ID:AI_Discovery)。 这一刻你正在应对什么挑战?这位前...
TIOBE 公布了 2021 年 3 月的编程语言排行榜。 本月 TIOBE 指数没有什么有趣的变...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
前言 统计科学家使用交互式的统计工具(比如R)来回答数据中的问题,获得全景的认...