从自己稀稀拉拉的从图书馆里面借书看,再到真正的认识了面向对面这个神秘的东西,已经完全认识到这门课程,或者说这么语言的重要性。
面向对象,顾名思义,对象是重中之重,那么什么是对象?怎么去定义对象?怎么开始面向对象?
举个例子:我是一个学生,我在现实中是确确实实存在的,我就是一个对象,我属于学生这个类里面的,学生有各种,大学生,小学生,高中生。如果在代码中体现,并且我作为这个学生类里面的一个对象,需要去被使用的话,那么该怎么使用呢?
看如下代码:
Student stu = new Student();
new 是关键字,本条代码的意思就是,从Student这个类里面new了一个stu的对象,我们已经从类里面新建了一个stu的对象了,那么这个stu的对象就可以去参与我们即将要完成的任务,所谓的任务,就是已经写好了的方法。
既然提到了方法,什么是方法?学习必须要带着问题,去自己探索,自己研究。
方法,就是对象使用的方法,他是给对象来服务的,由类生对象,由对象,引申至方法。方法就是对象即将去做的事情,这里我们给上述的stu对象来创建他即将要实现,要做的一个study方法。
public void study(){ System.out.println("学习啦"); }
方法已经写好了,那么怎么去调用呢?格式是怎么样的呢?
我们已经有了一个stu对象了,那么要想让stu调用我们的study方法,有如下的代码格式,这是固定的,说不清的规则,有时候只能去遵守。
stu.study();
那么在控制台就会打印:学习啦
当多次调用这个方法的时候就会打出相对应次数的:学习啦
既然提到了方法,就不得不提一下在这个阶段,需要知道的内容:构造器
什么是构造器?构造器有什么用,他的代码格式,以及需要注意的东西有哪些呢?别急,我们慢慢来探讨。
首先,每个方法都有一个默认的无参构造器,这里,我们又接触了一个新的名词,无参,
即为没有参数。构造器就是构造方法,但是和一般的方法也有少许的差别。
默认的无参构造方法:
public Student(){ }
当然还有这样的构造方法:比如说,在构造方法的时候我们要初始化某些特定的值:
public Student(String name ){ this.name=name; }
或者是这样:
public Student(String name ,int age){ this.name = name ; this.age = age; }
所以,当创建对象的时候,就可以在后面的括号中,传递对应方法中的几个值,也就赋予了对象的初始值;
Student stu2 = new Student(name,age);
构造器与一般的方法有什么区别呢?
严格的来讲,构造器不能算是方法,因为它里面可以传入参数,像 String name ,int age。构造器方法没有任何返回值的定义,且必须与类名相同。构造器方法只有在创建对象时调用,对于一个对象而言,他的构造器只能调用一次。注意:每个类都有一个默认的无参构造器,这个构造器在代码中不会体现出来,但是如果重新写了一个有参数的构造器,默认的无参构造器就不能被调用。
构造器讲完了,下面来说一下值传递与引用传递;
值传递:java中有八种基本数据类型,这些类型的数据在调用传递时蹲守”值传递“规则;
public class Student { public void change(int t){ t=100; } }
public class Manager{ public static void main (String args[]){ Student stu1=new Student(); int i=1000; stu1.change(i); System.out.println("这里的i的值是"+i); } }
测试后的i的值为1000;
引用传递:首先要知道什么是引用;
前面我们已经根据Student 类创建了一个stu的对象,当我们说stu的时候就指向了一个学生的对象,但是这个学生的对象和这个stu是两个东西,我们不能说这个stu就是学生,也不能说学生就是stu,就是给了一个具体对象一个名字,叫stu,可以说stu 引用了学生这个对象;
那么就很容易理解引用传递这个概念了,就是一些带有名字的对象,相互之间进行渗透 ,进行相互赋值或者交换的时候,这个名字本身和这个对象发生了变化,对象存储在了这个名字所命名的空间当中,并且可以与其他同等条件下的其他对象进行的传递,就是引用传递;
下面再讲两个比较基础也是比较常用的问题:继承与接口
前面我们已经写好了一个Student类,这是一个学生的类,但是现在我们需要一个大学生类,大学生和学生有什么区别?大学生当然也是学生啦~大学生和学生都是需要学习的,但是不是所有的学生都要去考英语四级,大学生可以考,小学生就不可以,只是举个通俗易懂的例子,读者不要钻牛角尖,说什么天才少年5岁的时候英语就已经过了8级。。。。
那么我们这个大学生类,既要完成学生类里面学习的方法,又要考四级
那么这种情况就叫做继承,代码格式如下:
public class UNStudent extends Student{ }
既然还有考四级这件事情,这件事情是Student无法完成的 因为里面并没有考四级这个方法,所以就必须在我们的大学生UNStudent类里面重写Student方法,添加进去我们要考四级的方法,这就叫重写
由于继承和重写的机制,得到的结果可能不尽相同,这种情况叫做多态。
接口:
继承的机制,给了我们新的名词,也就是命名,UNStudent叫做子类,Student叫做父类,当子类中将要使用的方法在父类中无法提供的时候,就要在子类中重写父类的方法,这就需要定义接口,来声明,或者说是给定我们子类中的一些数据一些特定的属性和初始值;
接口的代码格式如下:
public interface NetJava{ public static final int age=20; public static final int grade=3; public static final String name ="Tom"; }
接口中没有任何实现的方法,所以接口是不能被创建对象的。
这段代码是错误的:
NetJava netj = new Netjava();
接口在使用中也是非常广泛的,一个好的接口可以省去一个程序员不少的麻烦。
既然上面提到了重写,下面就解释下重写,附加与重载的区别:
先看如下代码:
我们已经写了学生学习的方法:那么大学生学习的方法我们进行重写:
public class UNStudent extends Student{ public void study(){ String name = a; int age=30; System.out.println("学习的人的名字是"+name,“学习的年龄是”+“age”); } }
重载的代码如下:
public void study(String name,int age){ name = a; age=30; System.out.println("学习的人的名字是"+name,“学习的年龄是”+“age”); } public void study(int age,String name ,int hour){ System.out.println("重载方式1"); } public void study(int age,int hour,String name){ System.out.println("重载方式2"); } public void study(int hour){ System.out.println("重载方式3"); }
由上述代码可以看出,重写只是对已有属性的更改,重载而是对传递的参数的个数,顺序等进行更改,区别显而易见。
阶段性总结告一段落,笔者能力有限,理解程度也有限,还望多多指正批评。
相关推荐
Java作为全球最流行的编程语言之一,因其跨平台、面向对象的特点,被广泛应用于各种领域,如企业级应用开发、移动应用(Android)、大数据处理等。本教程主要针对Java2阶段的学习,旨在帮助初学者深入理解和掌握Java...
Java 语言是一个广泛使用的编程语言,它以其面向对象的特性、强大的安全性以及跨平台兼容性而闻名。在本文中,我们将深入探讨一些关键的 Java 知识点,这些知识点对于理解和掌握 Java 编程至关重要。 1. **作用域**...
总之,Java面向对象程序设计涵盖了从基础语法到高级特性的全面知识,对于想要从事Java开发的程序员来说,这是一个必不可少的学习领域。通过深入理解和实践,开发者能够创建出高效、稳定且易于维护的软件系统。
- **面向对象**:JAVA 是一种完全面向对象的语言,支持类、对象、继承、封装、多态等概念,极大地提升了软件开发的能力。 - **分布式**:JAVA 支持数据和操作分布在不同网络节点上的应用。这使得开发者可以构建出...
《Java面向对象程序设计(第3版)》是人民邮电出版社出版的一部经典教材,由杨晓燕和李选平两位专家共同编著。该书深入浅出地讲解了Java编程语言的核心概念和面向对象编程思想。PPT课件是教学辅助资料,通常包含了...
### JAVA面向对象基础知识点详解 #### 一、面向对象编程语言的发展史 面向对象编程(Object-...掌握面向对象的基础概念,对于任何想要深入学习和应用Java或其他面向对象语言的开发者来说,都是至关重要的第一步。
本资源是针对"ACCP5.0 S2"阶段的Java OOP上机贯穿案例,旨在帮助学习者深入理解和应用面向对象编程。"ACCP5.0 S2"可能是一个计算机编程课程或培训计划的一部分,其中S2可能代表课程的第二阶段,而"Java OOP上机贯穿...
这个实战教程提供了一个从头到尾的Java机器学习项目框架,帮助开发者理解并实践机器学习的各个阶段,同时也强调了数据预处理、模型选择和优化的重要性。通过这样的实践,可以增强对机器学习的理解,为未来解决更复杂...
Hibernate通过提供一套API,使得开发者可以使用面向对象的方式来操作数据库,而无需关注底层的SQL语句。 回到这个资源包,"database"文件很可能是包含了一系列的SQL脚本,这些脚本用于初始化项目所需的数据表结构和...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。在"Java作业和代码"以及"Java-se阶段代码"的主题中,我们可以深入探讨Java的基础知识、核心概念以及它在软件开发中的应用。这个压缩包...
### Java面向对象选择题知识点详解 #### 一、Java源文件命名规则 - **选项解析**: - **错误选项**:源文件名没有限制、必须使用`.class`扩展名。 - **正确选项**:Java 源文件的名称必须与其中定义的公共类名...
- **面向对象**:Java是一种面向对象的语言,支持类、对象、继承、封装、多态等面向对象的基本概念。 - **垃圾收集机制**:Java提供了自动垃圾收集机制,能够自动回收不再使用的对象,避免了内存泄漏问题。 2. **...
Java 学习第八章——面向对象 #### 面向过程与面向对象的区别 在讨论面向过程和面向对象之前,我们先明确几个概念。编程语言根据其编程范式可以分为多种类型,其中面向过程和面向对象是最常见的两种。 **面向...
在编程世界中,Java是一种广泛应用的面向对象的编程语言,以其跨平台、安全性高、性能稳定等特点备受开发者青睐。本教程“Java入门之Java2-3-4”是针对初学者精心设计的,旨在帮助新手快速掌握Java的基础知识和核心...
面向对象编程是Java的核心特性,本学习笔记涵盖了这一主题的深度探索,旨在帮助开发者深入理解并熟练运用面向对象的思想。2023年的版本更新可能包含最新的面试趋势和技术发展。以下将详细介绍Java面向对象编程的一些...
- **面向对象编程(OOP)**: Java的核心特性之一,通过类和对象的概念来组织代码。 - **课程目的**: 掌握Java这门高级面向对象编程语言,理解面向对象编程的基本原理,并具备基本的编程能力。 #### 二、课程性质与...
根据给定的文件信息,我们可以总结出一系列关于Java编程语言的重要知识点,这些知识点不仅涵盖了基本的语法和概念,还深入到了面向对象编程的核心原理。以下是详细的解析: ### 1. 文档注释与Javadoc - **知识点:...
在Java语言中,面向对象编程是其核心特性之一,使得Java成为企业级应用开发的首选语言。以下是对"使用Java实现面向对象编程"这一主题的详细阐述。 1. **类与对象**:Java中的所有数据结构都以类的形式存在,类是...
2. **类与对象**:Java是一种面向对象的语言,理解类和对象的概念至关重要。学习如何创建类,定义属性和方法,以及如何实例化对象。 3. **封装、继承和多态**:这是面向对象编程的三大特性。封装保护了数据的安全,...
Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和安全性著称。本学习资料专注于Java的基础语法,这是每个Java程序员必须掌握的核心知识。2023年的"Java 基础 第1阶段:基本语法——尚硅谷学习笔记...