JAVA学习之面向对象进阶和高阶

面向对象进阶

一、封装

在这里插入图片描述在类中加一个set方法进行设置传递的值。加一个get方法获取值。

建议所有属性都进行封装。

二、this关键字

this指的是当前对象。

既可以调用方法,也可以调用方法。

**注意:**在一个构造方法中调用另一个构造方法时,必须写在构造方法的第一行。

三、Static关键字

1、可以直接用快捷键创建set、get方法。

2、使用static修饰的属性存储在方法区中。

重点:

1、静态成员 在类加载时加载并初始化。

2、无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份( 可以理解为所有对象公用 )

3、在访问时: 静态不能访问非静态 , 非静态可以访问静态 !

四、包

package名:com.公司名.项目名.模块名…

五、权限修饰符

public、private、protected、default
在这里插入图片描述### 六、代码块

1、构造代码块:随着对象的每次创建执行一次,且执行在构造方法之前。

与构造方法的区别:无论用户调用哪一个构造方法,构造代码块都必然执行。

2、静态代码块:在构造代码块前面加上static。

随着类的加载(第一次使用),静态代码块执行。即只执行一次

3、普通代码块

4、同步代码块

面试题:构造方法 与 构造代码块 以及 静态代码块的执行顺序:

静态代码块 --> 构造代码块 --> 构造方法

面向对象高阶

一、继承
1、继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
2、继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
3、格式:

class 父类{
}
class 子类 extends 父类{ }

4、子类继承父类之后依然可以有自己特有的属性和方法。
5、限制:java只有单继承、多重继承。没有多继承
6、

创建子类对象时,会先在堆空间里创建父类对象空间,然后在创建子类空间。最后子类空间会有一个super方法指向父类,所以我们调用子类对象时也可以调用父类对象的属性和方法
7、子类只能调用父类中使用public和protected修饰的属性和方法,private和default修饰的属性和方法无法调用。
8、super关键字。
(1)、通过super可以访问父类构造方法。注意:调用super构造方法的代码,必须写在子类构造方法的第一行。在一个方法中不能既调用this又调用super。
(2)、通过super可以访问父类的属性
(3)、通过super可以访问父类的方法。
二、重写
规则:
1、参数列表必须完全与被重写的方法相同。
2、返回类型必须完全与被重写的方法相同。
3、访问权限不能比父类中被重写的方法的访问权限更低。
4、父类的成员方法只能被继承的子类重写
5、生命的static和private的方法不能被重写,但是能被再次声明
重写(Override)和重载(Overload)的区别:
1、位置不同:重载是在同一个类中,重写在子父类中。
2、参数列表:重载的参数列表必须不同,重写的参数列表必须相同
3、返回值:重载与返回值无关,重写的返回值类型必须是相同的。
4、访问权限:重载与权限无关,子类重写的权限不能小于父类的权限。
5、异常处理:重载与异常无关,重写的一场范围可以更小,但是不能抛出新的异常。
三、final关键字
修饰类型:
1、属性、变量:
(1)、变量成为了常量,无法在对其进行赋值。
(2)、final修饰的局部变量只能赋值一次(即声明时未赋值,然后单独赋值);
(3)、final修饰的成员属性,必须在声明时赋值。
(4)、全局常量:public static final。
(5)、常量的命名规范:由一个或多个单词组成,单词与单词之间必须使用下划线隔开,并且所有字母必须大写,例如:SQL_INSERT.
2、修饰类。
(1)、final修饰的类,不可以被继承。
3、修饰方法。
(1)、final修饰的方法,不能被子类重写
四、抽象类
1、概念
抽象类必须使用abstract class声明
一个抽象类中可以没有抽象方法。抽象方法必须写在抽象类或者接口中。
格式:

abstract class 类名{ // 抽象类
}

2、抽象方法
只声明而未实现的方法称为抽象方法(未实现指的是:没有“{}”方法体),抽象方法必须使用abstract关键字声明。
格式:
abstract class 类名{ // 抽象类
public abstract void 方法名() ; // 抽象方法,只声明而未实现
​}

​五、接口

接口中不允许出现实现方法,只能出现抽象方法,因此抽象方法的public和abstract可以直接省略。
全局常量可以省略public static final关键字。
六、多态
在这里插入图片描述
### 七、Object类

1、Object类是所有类的父类。

2、可以接收任意的引用数据类型。

### 八、toString和equals

1、所有类建议重写toString方法。

2、重写equals方法必须满足五个特性:

​ 自反性 :对于任何非空的参考值x , x.equals(x)应该返回true 。

​ 对称性 :对于任何非空引用值x和y , x.equals(y)应该返回true当且仅当y.equals(x)回报 true 。

​ 传递性 :对于任何非空引用值x , y和z ,如果x.equals(y)回报true个y.equals(z)回报true ,然后x.equals(z)应该返回true 。

一致性 :对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,前提是未修改对象上的equals比较中使用的信息。

非空性 :对于任何非空的参考值x , x.equals(null)应该返回false 。

equasls重写:也可以直接用快捷键。
在这里插入图片描述
### 九、内部类

成员内部类、局部内部类、匿名内部类、静态内部类。

十、包装类
在这里插入图片描述
字符串转换:使用包装类的好处是可以更好更快的转换字符串。

使用包装类还有一个很优秀的地方在于:可以将一个字符串变为指定的基本数据类型,此点一般在接收输入 数据上使用较多。 在Integer类中提供了以下的操作方法: public static int parseInt(String s) :将String变为int型数据 在Float类中提供了以下的操作方法: public static float parseFloat(String s) :将String变为Float 在Boolean 类中提供了以下操作方法: public static boolean parseBoolean(String s) :将String变为boolean

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到面向模板编程时,我们通常是指C++中的模板元编程(Template Metaprogramming,TMP)。模板元编程是一种在编译时进行的编程方式,基于C++的模板机制。它通过使用模板参数和特化等技术,使得程序可以在编译期间进行一些复杂的计算和类型操作。 在面向模板编程中,我们可以使用模板来定义通用的算法和数据结构,使其适用于不同类型的数据。通过使用模板参数,我们可以实现代码的通用性,而不需要为每种类型都编写重复的代码。这种泛型编程的特性使得我们可以更高效地复用代码,并提高程序的可维护性。 另一方面,高阶函数编程是一种编程范式,其中函数被视为“一等公民”,可以像其他数据类型一样被操作和传递。高阶函数编程强调函数的组合和转换,可以将一个或多个函数作为参数传递给另一个函数,并返回一个新的函数作为结果。 在高阶函数编程中,函数可以作为参数传递给其他函数,也可以作为返回值返回。这种能力使得代码更加简洁、模块化和可重用。高阶函数编程还支持一些特性,如闭包、柯里化和函数组合等,这些特性使得函数的组合和转换更加灵活和强大。 高阶函数编程通常与函数式编程语言(如Haskell、Clojure等)相关联,但在C++中,我们也可以使用一些技巧来实现类似的高阶函数编程的效果,如使用函数指针、函数对象(Functor)和Lambda表达式等。这使得我们能够在C++中使用一些高阶函数编程的特性,如映射、过滤、折叠等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值