![](https://img-blog.csdnimg.cn/f988f98430dc4be18db9cb8813461592.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java面向对象
文章平均质量分 58
Java面向对象
豆恭梓
在读计算机研究生一枚^_^
展开
-
详解Java内部类、匿名内部类
在局部内部类的方法中(比如:show如果调用局部内部类所声明的方法(比如:method)中的局部变量(比如:num)的话,要求此局部变量声明为final的。1.定义:Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类.成员内部类(静态、非静态 ) vs 局部内部类(方法内、代码块内、构造器内)匿名内部类不能定义任何静态成员、方法和类,只能创建匿名内部类的一个实例。成员内部类和局部内部类,在编译以后,都会生成字节码文件。类内可以定义属性、方法、构造器等。格式:成员内部类:外部类。原创 2023-06-08 20:36:47 · 608 阅读 · 0 评论 -
详解Java接口interface(面试题)
接口是一种契约,使用 interface 关键字定义,只能包含抽象方法和常量(即静态 final 字段,jdk8中有静态方法和默认方法)。实现:一个类可以继承一个抽象类(使用 extends 关键字),并且一个类只能继承一个抽象类。一个类可以实现多个接口(使用 implements 关键字),并且一个类可以同时实现多个接口。接口表示一种"具备什么能力"的关系,即某个类实现了接口所定义-的契约。面向接口编程:我们在应用程序中,调用的结构都是JDBC中定义的接口,不会出现具体某一个数据库厂商的API。原创 2023-06-08 20:36:37 · 616 阅读 · 0 评论 -
Java关键字abstract详解
1.可以用来修饰:类、方法2.具体的:abstract修饰类:抽象类抽象类不能实例化抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)。开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 —>抽象的使用前提:继承性abstract修饰方法:抽象方法抽象方法只方法的声明,没方法体包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。若子类重写了父类中的所的抽象方法后,此子类方可实例化。原创 2023-06-08 20:02:23 · 1206 阅读 · 0 评论 -
Java的final关键字详解
final:最终的1.可以用来修饰:类、方法、变量2.具体的:2.1 final 用来修饰一个类:此类不能被其他类所继承。2.2 final 用来修饰方法:表明此方法不可以被重写。原创 2023-06-08 19:45:22 · 771 阅读 · 0 评论 -
详解Java实现单例模式(面试题)懒汉式饿汉式
行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。结构型模式,共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。这种情况下,多线程并发访问会导致多个实例对象的创建,破坏了单例模式的唯一性。最终,就会创建两个不同的 Order 对象,违背了单例模式的原则。懒汉式:好处:延迟对象的创建。原创 2023-06-07 22:17:06 · 740 阅读 · 0 评论 -
Java代码块和属性的赋值顺序
非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法。类的成员之四:代码块(初始化块)(重要性较属性、方法、构造器差一些)静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构(如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行。如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行。1.代码块的作用:用来初始化类、对象的信息。静态代码块的执行要优先于非静态代码块的执行。分类:静态代码块 vs 非静态代码块。每创建一个对象,就执行一次非静态代码块。原创 2023-06-07 22:02:44 · 192 阅读 · 0 评论 -
详解Java中static的使用及其注意事项
工具类中的方法,习惯上声明为static的。 2.1 属性,是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量)运行时:java 类名 “Tom” “Jerry” “123” “true”5.2 关于静态属性和静态方法的使用,大家都从生命周期的角度去理解。① 随着类的加载而加载,可以通过"类.静态方法"的方式进行调用。属性是可以被多个对象所共享的,不会随着对象的不同而不同的。类 —yes --------no。对象 — yes ----- —yes。原创 2023-06-07 21:48:52 · 1542 阅读 · 0 评论 -
Java的包装类(装箱和拆箱面试题)
获得包装类对象中 包装的基本类型变量—如下两个题目输出结果相同吗?基本数据类型包装成 包装类的实例—为了使基本数据类型的变量具有。JDK1.5之后,支持。原创 2023-06-07 21:29:25 · 673 阅读 · 0 评论 -
Java面试题: == 和 equals() 区别,toString方法
说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体。如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体。补充: == 符号使用时,必须保证符号左右两边的引用数据类型变量类型一致。重写的原则:比较两个对象的实体内容是否相同.原创 2023-06-07 21:00:30 · 376 阅读 · 0 评论 -
Java的Object类和深拷贝和浅拷贝(面试题)
两个引用student1和student2指向不同的两个对象,但是两个引用student1和student2中的两个teacher引用指向的是同一个对象,所以说明是浅拷贝。方法:equals() / toString() / getClass() /hashCode() / clone() / finalize()简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍。"里面的对象“会在原来的对象和它的副本之间。浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。创建一个指向对象的引用变量的拷贝。原创 2023-06-07 16:03:38 · 724 阅读 · 0 评论 -
面向对象的特征三:多态性
看左边”:看的是父类的引用(父类中不具备子类特有的方法)“看右边”:看的是子类的对象(实际运行的是子类重写父类的方法)编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简称:编译时,看左边;运行时,看右边。在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型。一个引用类型变量可能**指向(引用)**多种不同类型的对象。Java向上转型与向下转型。原创 2023-06-07 15:49:02 · 484 阅读 · 0 评论 -
Java向上转型与向下转型
② 为了避免在向下转型时出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。有了对象的多态性以后,内存中实际上是加载了子类特有的属性和方法的,但是由于变量声明为父类类型,导致编译时,只能调用父类中声明的属性和方法。② 如果类B是类A的父类 且a instanceof A返回true, 则 a instanceof B也返回true。2. 父类是子类的实例。③ 要求a所属的类与类A必须是父类和子类的关系,否则编译错误。原创 2023-06-07 15:41:32 · 1701 阅读 · 0 评论 -
Java子类对象实例化过程
虽然创建子类对象时,调用了父类的构造器,但是自始至终就创建过一个对象,创建子类的对象,在堆空间中,就会加载所有父类中声明的属性。子类继承父类以后,就获取了父类中声明的属性或方法。1.从结果上看:继承性。原创 2023-06-07 15:30:24 · 139 阅读 · 0 评论 -
Java中this和super区别(面试题)
1.super 关键字可以理解为:父类的2.可以用来调用的结构:属性、方法、构造器3.super调用属性、方法:4.super调用构造器:原创 2023-06-07 15:26:17 · 1019 阅读 · 0 评论 -
详解Java的重写重载(面试题)
1.什么是方法的重写(override 或 overwrite)?子类继承父类以后,可以对父类中的方法,进行覆盖操作.原创 2023-06-01 10:51:01 · 419 阅读 · 0 评论 -
Java的继承性
4.子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类。一旦子类A继承父类B以后,子类A中就获取了父类B中声明的。注意:不要仅为了获取其他类中某个功能而去继承。5.子类继承父类以后,就获取了。3.子父类是相对的概念。:一个类只能有一个父类。原创 2023-06-01 10:33:57 · 435 阅读 · 0 评论 -
Java中的this、package、import
⑤ 构造器内部,最多只能声明一个"this(形参列表)"用来调用其他的构造器。(构造器ABC,A可以调B,B再调C,但是不能让A同时调B,C)中使用"this(形参列表)”,否则就会死循环(例如有两个构造器,都使用了this(形参列表),就会一直相互调用)① 我们在类的构造器中,可以显式的使用"this(形参列表)"方式,调用。④ 规定:"this(形参列表)"必须声明在当前构造器的首行。② 构造器中不能通过"this(形参列表)“方式调用自己。它在构造器内部使用,表示该构造器正在初始化的对象。原创 2023-05-31 16:59:04 · 797 阅读 · 0 评论 -
类的成员之:构造器(构造方法)
如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。如:Order o = new Order();现总结这几个位置,并指明赋值的先后顺序。JavaBean是一种Java语言写成的。截止到目前,我们讲到了很多位置都可以对。原创 2023-05-31 16:47:05 · 747 阅读 · 0 评论 -
面向对象特征之一:封装和隐藏
为什么要引入封装性?●我们程序设计追求“高内聚,低耦合”➢高内聚:类的内部数据操作细节自己完成,不允许外部干涉;➢低耦合:仅对外暴露少量的方法用于使用。●隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,原创 2023-05-31 16:27:34 · 571 阅读 · 0 评论 -
Java值传递和赋值规则
方法内变量的赋值规则:如果变量是基本数据类型,此时赋值的是变量所保存的如果变量是引用数据类型,此时赋值的是变量所保存的形参:方法定义时,声明的小括号内的参数实参:方法调用时,实际传递给形参的数据。原创 2023-05-21 21:17:44 · 420 阅读 · 0 评论 -
Java可变个数形参
(4) 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组形参的方法不能共存.(方法三 四不能共存 因为表达的意思一样不能共存)//Public void show(String[] strs) {} ----方法四。str) {} ----方法三。Public void show(String s) {} -----方法二。(6) 可变个数形参在方法的形参中,最多只能声明一个可变形参.Public void show(int i) {} —方法一。(3) 可变个数形参的方法与。原创 2023-05-21 20:41:29 · 157 阅读 · 0 评论 -
Java方法及重载
方法的声明:权限修饰符 返回值类型 方法名(形参列表){方法体方法的使用中,可以直接使用当前类中的属性和方法。原创 2023-05-21 20:27:53 · 43 阅读 · 0 评论 -
对比:Java属性 vs 局部变量
局部变量:声明在方法内、**方法形参、代码块内、**构造器形参、构造器内部的变量。属性:可以在声明属性时,指明其权限,使用权限修饰符。整型(byte、short、int、long:0)字符型(char:0 (或’\u0000’))属性:类的属性,根据其类型,都默认初始化值。浮点型(float、double:0.0) 2.1 在类中声明的位置的不同。引用数据类型(类、数组、接口:null)属性:直接定义在类的一**对{}**内。特别地:形参在调用时,我们赋值即可。属性:加载到堆空间中。原创 2023-05-21 20:24:33 · 61 阅读 · 0 评论 -
一、深入理解Java面向对象
程序员从面向过程的执行者转化成了面向对象的指挥者面向对象分析方法分析问题的思路和步骤:根据问题需要,选择问题所针对的现实世界中的实体。从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。类(Class)和对象(Object)是面向对象的核心概念。类是对一类。原创 2023-05-21 20:04:09 · 220 阅读 · 0 评论