Java面向对象学习小结

面向对象学习总结:

1类和对象的概念

1.1 认识面向对象和面向过程

面向对象 : (代表语言:Java)谁对谁有一个作用的动作,侧重结果,便于从宏观上控制事物的逻辑。譬如司机开车即为面向对象,我们只关注车是否启动,不关心车体是怎么运动的。一般应用于软件级系统开发,靠近用户的开发,屏蔽底层操作,如微信小程序等。

面向过程 :(代表语言:c语言)面向过程是一个具体的操作步骤,注重细节,侧重过程。关注问题的先后顺序以及具体过程。一般应用于系统级组件的开发,靠近底层的开发,如驱动等。

1.2 类、对象

1.2.1 什么是类?什么是对象?
类是一种具体的事物展示,对象是类的一种抽象整合表达,如表1-2-1所示,表中每一个单元格都是一个具体的类,而音乐、明星、电影等是具体类的一种抽象表达,称为对象。 表1-2-1 类和对象的关系演示

在这里插入图片描述

1.2.2 人身上有哪些类的属性?以及功能?

人的属性:name、height、weight、age、education、place......

人的功能:work、study、sport、play、travel...... 在面向对象过程中,变量模拟属性,方法去模拟功能,如图1-2-1所示

在这里插入图片描述

1.2.3 对象调用的四个步骤

①定义变量、定义方法

②由类产生对象,实例化对象

③给对象属性指定具体值

④调用方法,执行具体的实现

1.2.4 对象调用的内存分析图

在这里插入图片描述

1.3 static修饰的变量和方法

1.3.1 静态成员变量和静态成员方法

由static修饰的成员变量叫静态成员变量,静态成员变量存在方法区中,被当前类所有对象共享,在内存中只有一份,静态成员可以使用对象名.变量名的方式访问,但是一般不推荐,推荐使用类名.变量名的方式访问。

由static修饰的成员方法叫静态成员方法,也叫类方法。静态成员方法中只能直接使用静态的成员变量。静态成员方法中可以使用对象名.方法名调用,但是一般不推荐,推荐使用类名.方法名的方式调用。静态方法只能调用静态方法,而其他方法可以调用其他方法也可以调用静态方法
1.3.2 实例成员变量和实例成员方法

没有static修饰的变量,叫做实例成员变量。实例成员变量存储在堆内存中,每个对象都有自己独立的实例变量,在内存中有多份,实例成员变量只能使用对象名.变量名的方式访问。

没有static修饰的成员方法,叫做实例成员方法,实例方法可以直接使用静态和非静态成员变量,实例方法只能使用对象名.方法名方式调用。 一般来说,用于定义类的功能的方法,用实例方法;用于定义工具类,不需要对象就可以调用的方法,使用静态方法。

1.4构造方法

构造方法,也叫构造器,不是传统意义上的方法。构造方法的特点 :

1、构造对象:执行了构造方法,就会在堆内存上为对象开辟独立的内存

2、初始化对象属性:可以为对象属性做一些初始化工作

3、构造方法没有返回值,也没有void,构造方法名必须和类名一致,前面用public修饰,一般写法为public 类名(){}。

4、构造方法外部只能用new关键字进行调用

5、如果没有写构造方法,系统会默认添加一个无参的构造方法,如果写了构造方法,则系统默认的构造法会被覆盖,一般来说一个类需要准备两个构造器,一个是无参构造器,一个是包含所有参数的有参构造器

6、一个类中,至少要有一个构造方法,否则对象无法进行调用

7、构造方法可以手写,也可以自动生成,快捷键为:Alt+insert

8、构造方法可以调用构造方法,一般使用this(),传入实参即可

9、构造方法可以重载,要求跟普通方法对的重载一样

2 面向对象的三大特征

2.1 封装

2.1.1封装的概念
封装定义:隐藏实现的细节,仅仅对外展示使用接口。譬如电视机,我们看不到内部的实现细节,只能通过外部的按钮对其进行简单的调换操作 封装的作用:便于在宏观上控住逻辑,降低思维难度;提高系统的安全性
2.1.2访问修饰符的作用权限
访问修饰符 同一个类 同一个包 其他包中的子类 任意包 Private 可以访问 不可以访问 不可以访问 不可以访问 protected 可以访问 可以访问 不可以访问 不可以访问 default 可以访问 可以访问 可以访问 不可以访问 public 可以访问 可以访问 可以访问 可以访问

2.1.3设置器(getter)和访问器(setter)
一般来说为了系统的安全性,一般会对属性进行封装处理,在保证安全的前提下想要对属性进行访问,这时就产生了set和set(相当于在包装好的属性外面开一个小口)

2.2 继承

2.2.1继承的概念
继承:Java中由已有类派生出的新类,即子类继承父类的一些属性和功能,继承关键字:extends 继承特点:子类可以继承父类的所有属性和功能,同时还可以拓展自己的一些独有的功能和属性 继承的作用:

减少相同代码的编写量

降低代码的添加和修改量

实现多态的基本要求

2.2.2父类属性的隐藏和重写
父类属性的隐藏:当子类中定义了和父类同名的属性时,父类的属性就隐藏了,在子类方法中默认是子类的方法,如果子类要使用被隐藏的父类属性,使用super关键字.调用父类中隐藏的方法;

方法重写的语法要求:

返回值类型必须相同

访问修饰符,子类重写的方法的访问修饰符不能小于父类的方法范围

参数列表必须相同,不同即变为方法的重载而不是重写

不能被重写的方法:
1、final修饰的最终方法
2、父类中的静态方法,作用范围太大

2.2.3抽象类和抽象方法
抽象类:必须被继承,不能被实例化,可以实例化子类对象,由abstract修饰,如果子类不想重写父类的抽象方法,那么子类也必须声明成抽象类;子类必须实现直接父类和间接父类的所有抽象方法,抽象类中不但有抽象方法,还可以有普通方法。抽象类虽然不能被实例化,但是抽象类是有构造方法的,是为了满足子类的继承而准备的 抽象方法:必须被重写 没有方法体,由abstract修饰。抽象方法必须放在抽象类中。 抽象方法和抽象类,本质上是一种规范,是所有子类必须要实现的。
2.2.4 继承中的构造方法
构造方法是不能被继承的,子类的构造方法一定会调用父类的构造方法;在子类构造方法中使用super()调用父类的构造方法,当调用父类中无参的构造方法时,super()可以省略不写,当父类中不存在无参的构造方法时,super()必须写,并且传入相应的参数,super()必须是子类构造方法中的第一行代码; 当子类构造方法调用了其他构造方法时,就不能直接调用父类的构造方法了
2.2.5继承中代码块的执行顺序

①父类的静态代码块

②子类的静态代码块

③父类的普通代码块

④父类的构造方法

⑤子类的普通代码块

⑥子类的构造方法

2.3多态

概念:不同的对象,对同一功能,有不同的执行方法 父类出现的地方,子类一定可以出现 子类出现的地方,父类不一定可以出现 多态特征:多态是方法的多态,不是属性的多态; 多态的存在必须满足三个条件:继承、重写、父类引用指向子类对象 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时就产生了多态

2.4接口

接口在概念上跟抽象类很相似;抽象类是对子类的一种要求,是一种规范,可规范子类的同时,定义一个方法供子类继承使用;
接口更是对实现类的要求和规范,接口符合规范的制定,比抽象类还抽象的一种数据类型,仅仅提要求,但是不提供任何可以供实现类使用的功能,更能体现如果你是>>>,则你必须能做>>>
接口的特点:
1、接口中没有构造方法
2、接口不能被实例化
3、接口中的成员变量都是共有的静态常量,一般静态常量的常量名全部大写
4、接口中的方法都是共有的抽象方法,JDK1.8中,只有static修饰的静态方法和default修饰的方法有方法体,一个可以被重写,一个不可以被重写
5、接口不能被普通类继承,只可以被实现
6、接口可以被多个类实现,一个类可以同时实现多个接口
7、父类出现的地方,子类对象就能出现,接口出现的地方,其实现类对象就能出现
8、实现类要实现其直接接口和所有间接接口中的所有抽象方法
9、接口中的静态方法不能被重写
10、接口中的dafault方法可以被重写,但是重写时要把default去掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值