华清远见重庆中心—面向对象技术总结/个人总结

本文介绍了面向对象编程的核心概念,包括面向对象与面向过程的区别,强调对象和类的概念。重点讨论了面向对象的三大特性——继承、重写(覆盖)以及方法重载。还提到了构造方法的重载,final关键字的使用,以及Object类的重要性。此外,还涵盖了访问修饰符的作用和实例,以及对象转型和equals方法的重写规则。
摘要由CSDN通过智能技术生成

这一阶段主要学习了面向对象编程思想,通过具体的例子理解了面向对象和面向过程的思想。其中重点学习了面向对象,掌握了对象、属性、方法等相关的知识点并加以实际应用。

面向对象重点笔记

面向对象和面向过程编程思想


面向对象和面向过程的区别与联系:

面向过程POP,所有步骤依次执行,注重执行的细节。

面向对象OOP:创建解决问题的对象,让各个对象调用各自的方法配合执行。

面向对象编程思想中,类中定义的方法,具体的实现过程,也是面向过程的。

面向对象以对象为核心,强调事件的角色、主体,比如把事情指定给某个对象去操作;而面向过程以过程为核心,强调事件的流程、顺序,每一步操作都要顺序进行。

面向对象三大特性


继承

类B使用extends(延伸)类A,就能访问类B中的非私有(没有使用private修饰)成员变量和成员方法。

这个过程称为类B继承类A。

java

calss A{

private String secret="父类中的私有属性";

String name="父类"

}

clss B extends A{

void fun(){

System.out,println(secret);//无法访问父类中的私有成员变量

System.out,println(name);

}

}

继承可以减少代码冗余,将多个类中的公共代码提取出来保存到一个类中,这些类使用extends“继承”这一个公共类。

子类中就无需再写出这些公共代码,可以直接访问。

特点

​如果多个类中有相同的代码,可以将这些代码提取出来到一个公共的类中,这个类就是父类。再让那些类去extends继承这个父类,那些类就是子类,子类就无需再写重复代码。

子类中或子类对象可以直接访问父类中非私有(不用private修饰)属性和方法。

创建子类对象时,会现执行父类中相应的构造方法。

子类继承父类后,通常会对父类中的方法进行拓展或覆盖,这种方法称为重写。重写后,子类再调用该方法时,执行的是重写后的内容。

Java中是单继承,一个子类只能extends一个父类,一个父类可以有很多个子类。

Java中可以多重继承,类A可以继承类B,类B继承类C,这是类A既是类B的子类,也是类C的子类,类A可以访问类B和类C中的非私有成员。

任何类都是object类的子类。

方法重写override

当子类继承父类后,可以对父类中的方法进行拓展或覆盖。这个过程称为方法重写。

方法重写要求

​方法名、返回值、参数列表必须和父类一直

访问权限不能比父类更严格(访问修饰符的范围要么一致要么更大)。

不能抛出比父类更大的异常

IDEA中如果要重写方法,使用快捷键Ctrl+O在弹出的窗口中选择要重写的方法。

方法重载overload

在一个类中,如果多个方法的方法名不同,参数;列表不同时,这些方法称为重载。

同名不同参

重载用于,在一个类中,某个方法在不同条件下,执行不同的内容。

方法重载要求

方法名相同

参数必须不同(数量、类型)

重载和重写相关面试题

说出重载与重写的异同

相同点:方法名不变

不同点:

​重载在一个类中,重写在继承关系中子类重写父类。

​重载时参数必须不同,重写参数必须相同

​重载返回值无要求,重写返回值必须相同

​构造方法能重载吗?能重写吗?

构造方法可以重载。构造方法不能重写。

​构造方法执行时,一定会创建对象吗?

不一定。创建子类时会自动执行父类构造方法,但不会创建父类对象。

this和super


都可以当做对象和构造方法使用。

  • 当做对象:this表示当前类的对象,super当前类的父类对象。

this和super当做对象使用时,只能用在非静态方法中。

  • 当做构造方法

  • this()表示当前类中的无参构造方法,如果带参数就表示对应参数的构造方法

  • super()表示当前类的父类无构造方法,如果带参数就表示对应参数的构造方法。

this或super只能用在另一个构造方法的首行。

在继承后,如果子类和父类都没有写出任何构造方法时,子类中有一个隐藏的无参构造方法,会自动调用父类的无参构造方法。

包package

通过包可以将.java源文件进行结构化管理,相当于Windows中的文件夹。

不同包中,可以保存相同的.java源文件

某个类在某个包中时,会在该类的代码最上面加上package 包名;

包的命名

包名通常使用该公司域名的倒序形式。

baidu.com是百度的域名,有一个test的项目,包名写为com.baidu.test。

包名中的“.”,相当于进入文件夹

如com.baidu.test,会创建3个文件夹:com下有baidu,baidu下有test。

导入包

如a包中的类要使用b包中的类时,需要在a包中的类中,导入b包或b包中的某个类。

如在使用scanner时,就需要导入scanner所在的java.util包,impoert.util.scanner;

在idea中,如果是通过自动补全的形式写的代码,会自动导入该类,或者自动导包删包。

如果需要手动导入包,在报错的位置上按下快捷键 alt+回车。

如果多个类,类名相同但在不同的包中,使用该类时选择合适的包。

访问修饰符

访问修饰符可以限制某个类、属性或方法的访问权限

用法:

修饰类:访问修饰符class

修饰属性:访问修饰符 数据类型 变量名

修饰方法:访问修饰符 返回值类型 方法名(){}

访问修饰符

含义

可以修饰

public

公共的

类、方法、属性

protected

受保护的

方法、属性

不写

默认的

类、属性、方法

private

私有的

方法、属性

同一个类中

同一个包中不同类

不同包中的子类

不同包中的非子类

publi(公共的)

protected(受保护的)

×

不写(默认)

×

×

private(私有的)

×

×

×

访问权限从大到小:

public>protected>default(默认)>private

final 关键字

修饰属性

当final修饰属性时,该属性值不可更改

如果一个变量被final修饰,称为常量,常量是程序运行中不能更改的量,所以定义常量时必须要赋值,常量名使用大写字母,多个单词之间用下换线隔开。

final数据类型常量名;

finalintNUM=123;

finaldoublePI=3.14;

修饰方法

当final修饰方法时,该方法不能被重写。

在方法的返回值前加上final。

修饰类

当final修饰类时,该类不能被继承。

定义类,在class前加上final。

Object类

是java中所有类的父类,每个类都是这个类的子类,但没有使用extends体现出来。

该类中定义了很多方法,通常需要进行重写。

instanceof 检测对象是否属于指定类型。(对象 instanceof 类)

比较对象相同不能使用==

比较对象之间是否相等要使用重写后的equals方法,重写时选择要比较的属性。

如果两个对象的属性全部相同,在日常的业务逻辑中,可以视为这两个对象是同一个对象。

如果用==比较,比较的是对象的内存地址,地址不同,就是属性相同,返回false。

如果比较的是同一个对象,直接return true

对象造型/对象转型/cast

类似于原始类型中的数据类型转换。对象A转换为对象B的过程,称为对象转型。

在非继承关系的两个对象中,无法转型。

向下转型

父类对象转换为子类对象的过程,称为向下转型。强制转换

向上转型

子类对象转换为父类对象的过程,称为向上转型。自动转换

在IDEA中自动生成equals方法

在类中右键generate或快捷键alt+ insert,选择equals and hashcode,选择属性。

如果两个对象的id相同就视为同一个对象,可以只选择id属性。

如果两个对象的所有属性相同才视为同一个对象,选择全部属性。

同时生产的hashcode()可以删除。

nextLine 接收回车前输入的所有内容

next()接收空格前的输入的所有内容

sc.nextLine();消除上次输入的回车

重难点

  • 构造方法能重载吗?能重写吗?为什么?

构造方法能重载,不能重写。

构造方法都是重载关系,构造方法在一个类中,名字都是类名,参数各不相同,这就是重载的要求。

重写发生在继承中,子类重写父类 的方法。子类和父类名称不同,构造方法不同。违反了重写的要求:方法三要素相同。

  • 成员变量、局部变量、静态常量

成员变量:定义在类中的变量,类的属性,有默认值,可以通过调用对象使用。

局部变量:定义在方法中的变量,没有默认值,只能在方法中赋值使用。

静态常量:被final、static修饰的成员变量

  • JDK1.8后,接口中可以有什么方法?

抽象方法、被default修饰的默认方法、被static修饰的静态方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值