Java基础01——面向对象总结

个人学习总结:

面向对象

面向对象(OOP)是一种思想,通过这中思想可以把生活中复杂的事情变得简单化,万物皆对象。
三大特征:封装性、继承性、多态性。
每个对象具有三个特点:

  • 对象的状态——基本特征(如:姓名、性别…);
  • 对象的行为——功能(学习、工作…);
  • 对象的标识——唯一的地址值(身份证号)。

一、封装

-封装是指隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式。
-好处:提高安全性、提高重用性。

1.Pvivate关键字

-一个权限修饰符,用于修饰成员变量和成员方法。
-被私有化的成员只能在本类中访问。

2.构造方法

-一种特殊的方法,它是一个与类同名且返回值类型为同名类类型的方法。
-对象的创建就是通过构造方法来完成的。
-功能:主要完成对象的创建或对象的初始化。当类实例化new一个对象时会自动调用构造方法。
-构造方法和其他方法一样,也可以重载(方法名一致,参数列表不同)。

3.构造代码块和局部代码块

构造代码块:
1.在类的内部,方法的外部 的代码块;
2.通常用于抽取构造方法中的共性代码;
3.每次调用构造方法前都会调用构造代码块;
4.优先于构造方法加载。
局部代码块:
1.在方法体内部的代码块;
2.通常用于控制变量的作用范围,出了括号就失效;
3.变量的范围越小越好,成员变量会有线程安全问题。
运行时加载数据:
构造代码块→构造方法→局部代码块

4.this关键字

-代表本类对象的一个引用对象。
例:Student this = new Student();
-当局部变量名和成员变量名相同时,通过this调用本类的成员变量。
例:this.name = name;
-通过this();调用无参构造;
this(参数);调用有参构造。
-this在构造方法中使用时,必须在第一行展示。

5.封装后的成员方法和成员变量

-被私有化的成员变量调用,可通过set()和get()方法。
-被私有化的成员方法调用,可通过类中其他普通方法间接调用。

二、继承

-继承是面向对象最显著的特征。
-继承是从已有类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的功能。定义为基类/父类/超类。
-不能选择性的继承父类。
-复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。

1.特点:

1.使用extends关键字;
2.相当于子类把父类的功能复制了一份;
3.Java只支持单继承;
4.继承可以传递;
5.不能继承父类的私有成员;
6.继承多用于功能的修改,子类可以拥有父类功能的同时,进行功能拓展;
7.像是is a的关系。

2.super关键字:

1.通过super可以调用父类的功能;
2.super相当于父类的一个引用对象;
3.如果在构造方法中使用,必须是第一条语句,类似this。

3.this和super的区别

1.this代表本类对象的引用,super代表父类对象的引用;
2.this用于区分局部变量和成员变量;
3.super用于区分本类变量和父类变量;
4.this.成员变量 this.成员方法() this(【参数】)代表调用本类构造方法;
5.super.成员变量 super.成员方法 super.([参数])代表调用父类构造方法;
6.this和super不可以在构造方法中同时使用,因为他们两个都要求在第一行实现。

4.方法重写Override

1.可以在子类中修改父类原有的功能,也可以添加子类特有的功能;
2.子类中方法的声明和父类完全一致,会发生覆盖/重写/复写操作;
3.方法的声明:包括方法的返回值、方法名和参数列表。
注意:
1.父类中的私有方法不能被重写;
2.子类重写父类方法时,修饰符要大于等于父类的修饰符权限;
3.父类中的构造方法不能被子类继承

5.方法重写(Override)和方法重载(Overload)的区别

1.方法重写必须有继承关系,在子类中对父类的方法进行重写;
2.方法重载在同一个类中,对普通方法进行重载;
3.方法重写返回值、方法名、参数列表必须相同;
4.方法重载方法名相同,参数列表不同;
5.方法重写要求子类的修饰符要大于等于父类的修饰符;
6.方法重载对权限没有要求。

6.static关键字

-用于修饰成员方法、成员变量。
-特点:
1.随着类的加载而加载;
2.只加载一次,就会一直存在,直到类消失就一起消失;
3.优先于对象先加载;
4.被所有对象所共享;
5.可以通过类名直接调用。
-静态内存图:
在这里插入图片描述

7.静态代码块、构造代码块、局部代码块

1.静态代码块:在类加载时加载,并且只被加载一次,一般用于项目的初始化;
2.构造代码块:在创建对象时自动调用,每次创建对象都会被调用,用于提取构造方法中的共性;
3.局部代码块:方法体内的代码块,用于控制变量的作用范围。

8.final关键字

-可以修饰类、方法、成员变量。
-特点:
1.被final修饰的类:不能被继承;
2.被final修饰的方法:不能被重用;
3.被final修饰的变量:只能是常量,值不能被改变;
4.常量的定义类型:final 数据类型 常量名 = 常量值。

三、多态

-对台指同一个实体同时具有多种形式,是面向对象程序设计的重要特征。
-好处:可以把不同的子类对象都当做父类来看,可以屏蔽不用子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。

1.特点:

1.多态的前提是继承;
2.多态的前提是要有方法的重写;
3.父类引用指向子类对象,
例:Animal a = new Dog();
4.编译看左边,运行看右边

2.多态的成员使用

-特点:
1.成员变量:使用的是父类;
2.成员方法:由于存在重写现象所有使用的是子类的;
3.静态方法:随着对象而存在,谁调用就返回谁的。
-修饰符作用范围:

子类任意
public
protected
default
private
3.异常

-用来封装错误信息的对象,组成结构:类型,提示,行号。
-异常处理:
程序中遇到了异常,通常有两种处理方式:捕捉和向上抛出;
当调用一个抛出异常的方法时,调用位置可以不做处理继续向上抛出也可以捕获异常。

4.抽象类

-Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。
-没有方法体的方法称之为抽象方法,含有抽象方法的类称之为抽象类。
-抽象类可以理解为是一个只有方法声明没有方法体的特殊类。
-特点:
1.通过java关键字abstract实现;
2.可以修饰方法或者类;
3.抽象类中没有抽象方法(子类去实现);
4.如果类中有抽象方法,那该类必须定义为一个抽象类;
5.子类继承了抽象类以后,要么还是一个抽象类,要么就把所有抽象方法重写;
6.多用于多态;
7.抽象类不能被实例化。

四、接口

-Java类由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。
-Java接口和java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。
-OOP中,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程。
-正确地使用接口、抽象类这些有用的抽象类型作为java结构层上的顶层。

1.特点:

1.接口中都是抽象方法;
2.通过interface关键字创建接口;
3.通过implements让子类来实现;
4.可以理解成,接口是一个特殊的抽象类;
5.接口突破了java的单继承的局限性;
6.接口和类之间可以多实现,接口和接口之间可以多继承;
7.接口是对外暴露的规则,是一套开发规范;
8.接口提高了程序的功能扩展,降低了耦合性!! 继承的耦合性很强。

2.接口和抽象类的区别

1.抽象类和接口都不能被实例化,如果实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象;
2.抽象类要被子类继承,接口是要被实现;
3.抽象类中 可以 有构造方法 ,接口里 不能 出现 构造方法;
4.抽象类里可以有 变量, 接口里没有变量全都是静态的常量;
5.接口里定义常量的语法:
public static final String NAME = “liyi”;
会为变量自动拼接 public static final;
6.抽象类里可以有普通方法 , 也可以有 抽象方法 , 接口里都是抽象方法;
7.抽象方法和子类之间是继承关系,而且java中只支持单继承;
8.接口突破了java单继承的局限性,因为接口可以多继承也可以多实现,甚至可以继承的同时多实现;
9.接口的复杂用法:

  • 多继承:interface A extends B,C 其中A是子接口,同时拥有自己和BC的功能;
  • 多实现:interface AImpl implements M,N,P,O 其中AImpl是实现类,需要同时重写MNPO中的所有抽象方法,否则就是一个抽象类;
  • 继承的同时多实现:class AImpl extends Object Implements M,N 一定是先继承后实现。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值