J2SE之面向对象

2024-08-26 05:58
文章标签 面向对象 j2se

本文主要是介绍J2SE之面向对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

J2SE面向对象这一块的内容还是较为简单的。之前面向对象的知识已经有了一定的了解与深入。到了Java这一块,换汤不换药。

在这里我将其与C#进行对比,分为新知识与就旧知识。图片比文字更加直观生动形象容易理解,晒一下:

         

首先声明一点,内存分析贯穿始终,也是我这次学习收获的最大的一个知识点。

 

面向对象:

面向对象有三部曲:考虑有哪些对象,类和对象有哪些属性和方法以及类和类之间有什么关系。  

类的成员变量有八种,除了这八种,那么其它就为引用(一小块内存指向一大块内存).对象的创建和使用,类和对象的关系,构造方法相信我们已非常熟练,这里不过多介绍。

 

约定俗成命名规则:

类明首字母大写,变量名和方法名首字母小写,要遵循驼峰标识法(出现若干个单词的情况下,单词首字母大写,其他为小写)。


内存解析:
          内存解析对于面向对象代码的学习大有帮助,学好了,代码的分析会达到事半功倍的效果。

内存分为栈区和堆区。声明定义的对象放在栈桥区,实例化出来的对象放在堆区。在这里要注意操作完堆区中留出的对象如果没有引用指向它,那么就会被垃圾收集器收集。

 

继承和权限控制:

附一张图胜千言万语。


注意一点,对于class的权限修饰只可以用public和default。

 

重写:

重写大家已经很熟悉了,说几点注意的地方。除了重些方法必须和被重写方法具有相同的方法名称、参数列表和返回类型,它还不能使用比被重写方法更严格的访问权限。

Java不同于C#的一点是在Java类中使用super来引用基类的成分

 

构造方法:

子类的构造的过程中必须调用基类的构造方法。子类可以在自己的构造中使用super(argument list)调用基类的构造方法。将super换成this代表调用本类的另外的构造方法,如果调用super,必须写在子类构造方法的第一行。

除此之外,如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。如果基类没有无参的构造方法那么就会出错。

 

Hashcodes table

附图一张 :


从图中可以看出,独一无二代表了一对象,并且通过哈希码可以找到对象位置。


Object类和equals方法

public boolean equals(Object obj)方法,提供定义对象是否相等的逻辑。

Object的equals方法定义为:x.equals(y)当x和y是同一个对象的应用时返回true否则返回false.


Final关键字

这是新接触的一个知识点,理解一下:

final的变量的值不能够被改变(final的成员变量,final的局部变量(形参))

final的方法不能够被重写

final的类不能够被继承


小结:

        面对对象的知识学过来学过去也就这么多,精通了一门语言,再去学别的语言,用上两三天研究一下语法就完全可以掌握。这次学习让我收获最大的就是要有宏观意识,不能够一头扎进某个难点出不来,造成学习效率的低下,使自信心大打折扣。学习前期要讲究囫囵吞枣,有时间和量的规定,前期先强迫自己高效完成,以后就会养成习惯。


补充:关于接口,我们都知道一个对象可以实现多个接口。但是会有多个接口方法一样的问题,为了避免混淆,是不去同时实现的。

这篇关于J2SE之面向对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107735

相关文章

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(

chapter06 面向对象基础 知识点Note

文章目录 前言类的设计 属性和行为对象的内存解析 (堆 栈 方法区)类的成员之一 变量(属性) field类的成员之二 方法 method对象数组方法重载 overload可变个数的形参 语法糖方法的值传递机制递归关键字package importMVC设计模式import导入面向对象特征之一 封装类的成员之三 构造器JavaBeanUML类图 前言 ` 面向对象封装 面向

JAVA初级掌握的J2SE知识(二)和Java核心的API

/** 这篇文章送给所有学习java的同学,请大家检验一下自己,不要自满,你们正在学习java的路上,你们要加油,蜕变是个痛苦的过程,忍受过后,才会蜕变! */ Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类

JAVA初级掌握的J2SE知识(一)

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。 1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道

【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态

栈帧 每一次方法调用都会有一个对应的栈帧被压入栈(虚拟机栈)中,每一个方法调用结束后,都会有一个栈帧被弹出。 每个栈帧中包括:局部变量表、操作数栈、动态链接、方法返回地址。 JavaGuide:Java内存区域详解(重点) 动态链接 动态链接:指向运行时常量池中该栈帧所属方法的引用。 多态 多态允许不同类的对象对同一消息做出响应,但表现出不同的行为(即方法的多样性)。 多态

java基础总结15-面向对象11(抽象类)

下面通过一下的小程序深入理解抽象类 因此在类Animal里面只需要定义这个enjoy()方法就可以了,使用abstract关键字把enjoy()方法定义成一个抽象方法,定义如下:public abstract void enjoy();   从某种意义上来说,抽象方法就是被用来重写的,所以在父类声明的抽象方法一定要在子类里面重写。如果真的不想在子类里面重写这个方法,那么可以再在子类里

java基础总结14-面向对象10(多态)

面向对象最核心的机制——动态绑定,也叫多态 1 通过下面的例子理解动态绑定,即多态 package javastudy.summary;class Animal {/*** 声明一个私有的成员变量name。*/private String name;/*** 在Animal类自定义的构造方法* @param name*/Animal(String name) {this.name = n

java基础总结13-面向对象9(对象转型)

对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型。转型的意思是:如把float类型转成int类型,把double类型转成float类型,把long类型转成int类型,这些都叫转型。把一种形式转成另外一种形式就叫转型。除了基础数据类型的转型之外(基础数据类型的转型:大的可以转成小的,小的也可以转成大的。),对象领域里面也有对象之

java基础总结12-面向对象8(Object类)

1 Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗

java基础总结11-面向对象7(super关键字)

在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。 1 super关键字测试 package cn.galc.test;/*** 父类* @autho