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的类不能够被继承

小结:

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

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

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-09 17:22:59

J2SE之面向对象的相关文章

J2SE之面向对象编程_

Java类的定义 成员变量 Java面向对象基本概念 - 引用 对象的创建和使用 方法 类和对象的关系 构造方法(构造函数)

J2SE之面向对象编程

面向过程的设计思想和面向对象的设计思想 对象类的概念 类(对象)之间的关系 之 关联关系 继承关系(一般和特殊) 聚合关系(整体和部分) 实现关系 多态 Java与面向对象 为什么用对象?

J2SE之面向对象_重载_this_static_package_import_继承_访问控制

方法的重载 构造方法重载 对象的创建和使用 class Point { private double x; private double y; Point(double x1, double y1) { x = x1; y = y1; } public double getX() { return x; } public double getY() { return y; } public void setX(double i) { x = i; } public void setY(doubl

J2SE之面向对象_方法的重写

方法的重写(overwrite/override) class Person { private String name; private int age; public void setName(String name){this.name=name;} public void setAge(int age) {this.age=age;} public String getName(){return name;} public int getAge(){return age;} public

J2SE基础:4.面向对象的特性

面向对象的特性 封装 继承多态 封装: 定义: 通过对象的封装,实现了模块化和信息隐藏. 通过对类的成员施以一定的访问权限,实现了类中成员 的信息隐藏 注意点: 对象自已该做的一些事情与方法不能交与其它类去实现. 将内部的实现隐藏化.别人不用去关心内部怎么实现. 只要调用方法就可以得想结果. 继承: 继承的特性: A:通过继承可以实现代码的复用.子类可以继承父类中的变量及方法. 前提:父类访问修饰符的控制对继承的影响: 父类私有的属性与方法不能被子类继承. Default:同一包中可以访问. B

J2SE基础:5.面向对象的特性3

1:抽象方法: 当父类的某个方法都会被子类重写时,那么父类的方法就没有 实现的必要.但必须要声明. 所以这个方法就可以定义抽象方法(只有声明,没有实现). 2:抽象类: 由于抽象方法是不完整的方法,因而抽象方法所属的类也是一个不 完整的类,所以类必须定义成抽象类. 抽象类中可以包含抽象方法和非抽象方法. 3:当一个子类继承抽象类时 子类就必须重写抽象类中的所有的抽象方法. 如果子类不想实现,那么必须将自已也定义一个抽象类. 4:抽象类不能被实例化,只能实例化子类. Animal animal =

J2SE基础:5.面向对象的特性2

Final的使用 final在类之前 表示该类是终于类.表示该类不能再被继承. final在方法之前 表示该方法是终于方法,该方法不能被不论什么派生的子类覆盖. final在变量之前 表示变量的值在初始化之后就不能再改变:相当于定义了一个常量. 对象的上溯(上转型)和对象的下溯 上转型对象的特点: A a = new B(); 实例化是B,仅仅只是是A去接收而已. 所以仅仅能看到A中定义的属性与方法. A:不能操作子类新增的成员变量和方法: B:能够操作子类继承的变量,也可操作子类继承或重写的方

java基础教程-面向对象(一)

一.面向对象 1.1 java键盘输入 1.1.1这种方法我认为是最简单,最强大的,就是用Scanner类 import java.util.Scanner; public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.println(“请输入你的姓名:”); String name = sc.nextLine();//字符串输入 System.out.println(“请输入

J2SE总结

刚刚学完J2SE,总结一下,不当之处敬请赐教. 基本概念: 刚刚接触Java,突然冒出了好多了名词,一会儿J2SE,一会儿Java,一会儿JDK,蒙圈了,总结一下他们的关系吧. SDK:Software Development Kit,软件开发工具: JDK:Java Development Kit,Java开发工具: J2SDK:Java2 SDK: Java2:自JDK1.2之后Java版本统称为Java2(点击查看JDK各版本): J2SE.J2EE.J2ME是根据Java的应用而开发的不