黑马程序员Java教程:面向对象文档注释

合集下载

【黑马】基础笔记

【黑马】基础笔记

面向对象怎么理解面向对象?面向对象是当今主流的一种程序设计理念和设计规范,它取代了早期的"结构化"过程设计开发技术,主张一切皆为对象,程序以人的思维模式去解决问题。

面向对像的程序是由类组成的,每个类包含对用户公开的特定功能部分和隐藏的实现部分。

传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。

这一些过程一旦被确定,就要开始考考虑存储数据的方式,这就明确的表述了程序员的工作方式。

但面相对像却调换了这个顺序,它不必关心数据对象的具体实现,只要能满足用户的需求即可。

面向对象有三个最基本的特性,即:封装,继承,多态。

--内部类访问特点:1,|| 内部类可以直接访问外部类中的成员。

2,|| 外部类要访问内部类,必须建立内部类的对象。

一把用于类的设计。

分析事物时,发现该事物描述中还有事物,而且这个事物还在访问被描述事物的内容。

这时就是还有的事物定义成内部类来描述。

为什么内部类能直接访问外部类中成员呢?那是因为内部类持有了外部类的引用。

外部类名.this内部类可以存放在局部位置上。

内部类在局部位置上只能访问局部中被final修饰的局部变量。

——>老视频。

【黑马】:内部类的访问规则:①内部类可以直接访问外部类中的成员,包括私有。

为什么内部类能直接访问外部类中成员呢?那是因为内部类持有了外部类的引用格式:外部类名.this②外部类要访问内部类,必须建立内部类对象。

System.out.println(“inner:”+Outer.this.x);小格式:Outer.Inner int = new Outer().new Inner();直接访问内部类中的成员。

访问格式:①当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。

可以直接建立内部对象。

格式:外部类名.内部类名变量名= 外部类对象.内部类对象;Outer.Inner in = new Outer().new Inner();②当内部类在成员位置上,就可以被成员修饰符所修饰。

黑马程序员:【Java基础】面向对象(10)---抽象类的学习

黑马程序员:【Java基础】面向对象(10)---抽象类的学习

在Java中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类就叫抽象类。

一个抽象类中可以有一个或多个抽象方法。

抽象类定义规则:l 抽象类必须用abstract修饰符来定义,任何带有抽象方法的类都必须声明为抽象类。

l 抽象类不能被实例化,也就是不能用new关键字去产生对象。

l 抽象方法只需声明,而不需实现。

l 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个类还是抽象类。

抽象方法的写法:abstract 返回值类型抽象方法(参数列表);抽象类的写法:abstract class A{abstract int aa(int x,inty);}抽象类定义的格式学完了,下面首先思考一个问题,什么样的类需要用abstract关键字来修饰呢?当一个类在定义方法时,有的方法不知道该如何实现,如Animal类表示动物,动物都有发出叫声的方法,然而不同种类的动物发出的叫声是不一样的,因此在定义Animal类时,无法确定shout()方法该怎么写,针对这种情况,Java语言允许在定义方法时不写方法体,这样的方法为抽象方法,抽象方法必须用abstract关键字来修饰,而抽象方法所在的类必须是抽象类。

接下来通过一个案例来学习抽象类的使用。

abstract class Animal { // 定义抽象动物类abstract void shout(); // 定义抽象方法shout()}class Cat extends Animal {void shout() {System.out.println("喵喵……");}}class Dog extends Animal {void shout() {System.out.println("汪汪……");}}public class Example11 {public static void main(String[] args) {Cat cat = new Cat();cat.shout();Dog dog = new Dog();dog.shout();}}运行结果如下:喵喵……汪汪……Animal中的shout()方法被abstract关键字修饰,并且只有方法声明没有方法体,因此它是一个抽象方法。

黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料一、简介黑马程序员是一家专业的IT培训机构,提供全面的编程技术培训服务。

javaweb是其中的一门重要课程,本文为黑马程序员_javaweb讲义和笔记的资料整理。

二、javaweb基础知识1. Java语言概述Java语言的特点和优势,Java开发环境的搭建等。

2. Servlet技术Servlet的基本概念、生命周期、Servlet容器等。

3. JSP技术JSP的基本语法、JSP指令、JSP内置对象等。

4. MVC设计模式MVC设计模式在javaweb开发中的应用和实践。

三、javaweb开发流程1. 需求分析分析项目需求,明确开发目标和功能要求。

2. 数据库设计设计数据库表结构,确定数据存储方式和关系。

3. 技术选型根据项目需求和开发要求,选择合适的技术框架和工具。

4. 编码实现使用Java语言和相关技术进行编码实现。

5. 测试调试运行和调试项目,确保功能的正确性和稳定性。

6. 部署上线将项目部署到服务器上线,提供给用户访问和使用。

四、javaweb开发常用框架和工具1. Spring框架Spring框架的介绍和核心特性,以及在javaweb开发中的应用。

2. SpringMVC框架SpringMVC框架的详细讲解,包括请求映射、数据绑定、视图解析等。

3. MyBatis框架MyBatis框架的使用方法和技巧,以及与数据库的集成。

4. Maven工具Maven的基本使用和配置,常用插件介绍。

五、javaweb开发中的常见问题和解决方案1. 数据库连接异常分析数据库连接异常的原因和解决方法。

2. 页面跳转问题页面跳转的实现方式和常见错误排查。

3. 表单数据验证表单数据验证的常用技术和插件,提高数据输入的准确性和安全性。

4. 性能优化优化javaweb应用的性能,减少响应时间和资源占用。

六、实例项目提供一个实例项目,通过对该项目的讲解和分析,帮助学员理解和掌握javaweb开发的方法和技巧。

黑马程序员:【Java基础】面向对象(6)-static关键字

黑马程序员:【Java基础】面向对象(6)-static关键字

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象。

也就是说,它不依赖类特定的实例,被类的所有实例共享。

Static是随着类的加载,Java虚拟机根据类名在运行时数据区的方法区内找到他们。

因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。

当static变量前用private修饰时,表示这个变量可以在类的静态代码块或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用),但是不能在其他类中通过类名来直接引用,这一点很重要。

实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。

static前面加上其它访问权限关键字的效果也以此类推。

static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问,访问语法为:类名.静态方法名(参数列表...)类名.静态变量名用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。

1、static变量按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。

两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。

对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

黑马程序员:【Java基础】之语法格式详解(2)

黑马程序员:【Java基础】之语法格式详解(2)

二、Java中的注释Java中的注释分为三种:l 单行注释l 多行注释l 文档注释单行注释:就是在一行或一行中的后半部分文本前增加双斜线(//),被注释的内容会被Java编译器忽略,例如:int a = 1; // 定义一个整型变量多行注释:就是在注释内容前面以“/*”开头,注释内容末尾以“*/”结束。

多行注释适合文本超过一行时,例如:/* int a = 1; // 定义一个整型变量int b = 5; */文档注释:是以“/**”开头,并在注释内容末尾以“*/”结束。

这种方法注释的内容可以被javadoc等工具用来生成程序的帮助文档,用以说明该程序的层次结构及其方法调用。

需要注意的是:/*…*/”中可以嵌套“//”注释,但不能嵌套“/*…*/”注释,因为第一个“/*”会以它后面第一次出现的“*/”作为与它配对的结束注释符,例如下面的代码就是错误的。

/*/*int a = 1;*/int b=5;*/三、Java中的标识符在编程过程中,经常需要在程序中自定义一些符号来标记一些名称,如,包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。

标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但标识符不能以数字开头,不能是Java中的保留关键字。

合法的标识符定义:usernameusername123user_name_userName$username非法的标识符定义:123usernameclass100.23Hello World为了增强代码的阅读性,建议初学者在命名标识符时遵循以下规则:l 标识符推荐使用全英文形式,为了提高阅读性,要把标识符定义的有意义。

l 包名所有字母一律小写。

例如:xxx.yyy.zzz。

l 类名、接口名的所有单词首字母大写。

例如:XxxYyyZzz。

l 常量名所有字母都大写,单词之间用下划线分割。

例如:XXX_YYY_ZZZ。

l 变量名、方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写。

黑马程序员:【Java基础】面向对象(2)-类的封装

黑马程序员:【Java基础】面向对象(2)-类的封装

封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。

封装能为软件系统带来以下优点:1:便于正确方便的理解和使用系统,防止使用者错误修改系统的属性。

以供电系统为例,过去房屋隔壁的上方都是电线,现在的房屋电线都看不见了,在墙壁上只露出一些电源插口,为啥要把电线隐藏起来呢?理由很简单,暴露在外面的电线既不安全也不美观。

再比如电视剧系统,尽管本身的实现很复杂,但用户很方便,电视剧的实现细节都被藏在壳子里面,没有必要向用户公开。

2:有助于建立各个系统之间的松耦合关系,提供系统的独立性。

当一个系统的实现发送变化时,只要它的接口不变,就不会影响其他的系统。

3:提供软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境下得到重用。

例如,干电池就是独立的,它可以在手电筒,相机中都能发挥作用。

4:降低构建大型系统的风险,即使整个系统不成功,个别独立的系统可能仍然有价值。

例如相机坏了,里面的电池还是有用的,还可以安装到手电筒中。

在java面向对象编程语言中,主要是通过访问控制机制来进行封装,这种机制能控制对象的属性和方法的可访问性。

在Java中提供了以下四种访问控制级别。

l public:对外公开,访问级别最高l protected:只对同一个包中的类或者子类公开l 默认:只对同一个包中的类公开。

l private:不对外公开,只能在对象内部访问,访问级别最低。

灵活运用这四种访问级别可以有效的控制对象的封装程度,那么到底哪些对象的属性和法应该公开,哪些应该隐藏呢?这必须具体分析,下面是封装的两个大致原则:1:把尽可能多的东西藏起来,对外提供简捷的接口系统的封装度越高,那么它的独立性就越高,而且使用起来越方便,例如半自动洗衣机HalfAutoWasher和全自动洗衣机AutoWasher就是个明显的例子。

以下程序演示的是半自动洗衣机的过程。

HalfAutoWasher washer=new HalfAutoWasher();//开始洗衣服washer.on();//开机//洗涤washer.inputWater();//放水washer.setTimer(5);//定时5分钟washer.wash();//洗涤washer.dischargeWater();//排水//第一次清洗washer.inputWater();//放水washer.setTime(5);//定时5分钟washer.wash();//洗涤washer.dischargeWater();//排水//第二次清洗washer.inputWater();//放水washer.setTime(5);//定时5分钟washer.wash();//洗涤washer.dischargeWater();//排水//为衣服脱水washer.setTime(8);//定时八分钟washer.dehydrate();//脱水washer.off();//关机以下程序演示全自动洗衣机洗衣服的过程。

黑马程序员java基础入门资料

黑马程序员java基础入门资料

黑马程序员java基础入门资料黑马程序员是一家专注于计算机培训的机构,拥有丰富的教学经验和优秀的师资力量。

在黑马程序员的Java基础入门课程中,学员将学习Java编程语言的基本语法、面向对象编程思想以及常用的Java 开发工具和技术。

以下是有关黑马程序员Java基础入门的资料,以帮助初学者快速入门。

一、Java基础知识概述1. Java的发展历程:介绍了Java的起源、发展和目前的应用领域。

2. Java的特点和优势:强调Java的跨平台性、面向对象和丰富的类库等优势。

3. Java的环境搭建:演示如何下载并安装Java开发工具包(JDK),以及配置环境变量。

二、Java语言基础1. Java的基本语法:介绍Java的关键字、标识符、数据类型、变量、运算符、语句和控制结构等基本语法知识。

2. Java的输入输出:学习如何使用Java提供的输入输出类库实现控制台输入和输出操作。

3. Java的数组:介绍如何声明、初始化和使用Java中的一维和二维数组。

三、面向对象编程1.面向对象思想:讲解面向对象编程的基本概念,如类、对象、封装、继承和多态等。

2. Java类和对象:学习如何定义Java类、创建对象实例、调用对象的属性和方法。

3. Java的封装和继承:介绍Java中的封装和继承的概念和实现方法,以及封装和继承在面向对象编程中的作用。

四、常用的Java类库和API1.字符串操作:学习Java字符串的基本操作,如字符串的拼接、截取、替换和比较等。

2.文件操作:了解Java文件的读写操作,包括文件的创建、删除、重命名和复制等。

3.集合框架:介绍Java的集合框架,如ArrayList、LinkedList、HashMap等常用的集合类,以及集合的增、删、改、查操作。

4.异常处理:学习如何使用Java的异常处理机制来处理程序运行过程中可能出现的错误和异常情况。

五、Java开发工具和技术1. Eclipse开发环境:了解如何使用Eclipse来编译、调试和运行Java程序。

黑马程序员——面向对象(Java基础)

黑马程序员——面向对象(Java基础)

⿊马程序员——⾯向对象(Java基础)⼀.⾯向对象:1.何谓对象:在⾯向对象程序设计中,我们将问题空间中的元素以及他们在⽅案空间中的的表⽰物称作对象(object)Alan Kay总结了smalltalk 中对象的5⼤基本特征:1、所有的东西都是对象。

2、程序是⼀⼤堆对象的集合,他们通过消息传递,各个对象之间知道要做些什么。

3、每个对象都分配有⾃⼰的存储空间,可容纳其他对象。

4、每个对象都有⼀个类型。

5、同⼀类的所有对象能接收相同的消息。

2.对象的接⼝:我们向对象发出请求是通过它的接⼝定义的,对象的类型决定了它的接⼝形式。

3.OOP中唯⼀关⼼的:就是接⼝是什么,就像汽车的发动机⼀样,我们不必要知道它的结构是什么,只要它能⼯作就⾏了。

所有的程序是由⼀定的属性(数据)和⾏为(⽅法)组成的,不同的对象访问通过函数调⽤来完成,对象间的所有交流都是通过⽅法调⽤,通过对封装数据对象,很⼤程度上提⾼复⽤率。

4.对象的3个主要特征:behavior—说明这个对象能做什么。

State—当对象施加⽅法时对象的反映。

Identity---与其他相似⾏为对象的区分标志,每⼀个对象有唯⼀的indentity, ⽽这3者是相互影响的。

5.⾯向对象中最重要的思想就是类,类是模板是蓝图,从类中构造⼀个对象,即创建了⼀个类的实例。

(类好⽐⼀个建材市场,其中有许多⼦类--各种各样的装饰材料,⽽我们装修⾃⼰的房⼦就要选择我们需要的材料,(为了建⽴我们⾃⼰的程序,我们必须选择我们需要的类)这个⽐喻可以很形象的解释类是什么。

6.类之间的关系:依赖关系:use-a A类中的⼀个⽅法操作了另⼀个类中的对象。

聚合关系:has-a A类中的对象包含B类的对象。

继承关系:is-a A继承了B类,此时A类不仅有了B类的⽅法,还加⼊了⾃⼰的⽅法。

以便我们创建我们⾃⼰需要的对象。

Java中定义的每⼀个类都必须继承另⼀个类,使⽤关键字extends,如果⼀个类在定义中不现实使⽤关键字extends,这个类就会隐式继承Object 类。

黑马程序员——面向对象程序设计(2)

黑马程序员——面向对象程序设计(2)

⿊马程序员——⾯向对象程序设计(2)------- android培训、java培训、期待与您交流! ----------⾯向对象程序设计:众所周知,java中的⾯向对象的三⼤基本特征是:【封装】、【继承】、【多态】通过⼏天的初步学习,加上C++的基础,对三⼤特征有了进⼀定的认识和了解,现将⾃⼰这⼏天的学习笔记做⼀下归纳总结:⼀、封装对象要有⼀个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重⽤性)具体来说:1.属性:私有 private(提供set和get⽅法)2.⽅法:公开或私有public/private3.⽅法声明 --> 公开⽅法实现 --> 隐藏实现改变时,对对象的使⽤者没有影响。

⼆、继承共性放到⽗类,特性放到⼦类;⽗类 --> ⼦类,其实就是特殊 --> ⼀般1.关键字: extends 例如:Dog extends Animal{}2.java中⼀个类最多只能有⼀个直接的⽗类,即单继承(具有简单性、树形结构),C++中是单继承java中要实现多继承,通过接⼝来实现。

3.⽗类中所有属性和⽅法都能继承给⼦类;⽗类中的私有⽅法不能继承给⼦类。

4.访问权限继承  private 本类内部不能继承default 本类+同包同包⼦类可以继承protected 本类+同包+不同⼦包可以继承public 公开可以继承5.构造对象过程(1)分配空间(2)递归地构造⽗类对象a. ⽗类初始化属性b. ⽗类构造⽅法(3)初始化属性(4)调⽤构造⽅法6.super⽤法:super()调⽤⽗类的构造⽅法,只能出现在构造⽅法的第⼀⾏super.⽅法名 super表⽰⽗类的对象,通过它去调⽤⽗类的⽅法注意:在写类的时候,⼀定要写默认⽆参的构造⽅法,如果⼀个构造⽅法的第⼀句既不是this(),也不是super()时,那么就会在这⾥隐含的调⽤他的⽗类的⽆参的构造⽅法,即隐含的有super()。

黑马程序员JavaEE基础--类与对象

黑马程序员JavaEE基础--类与对象

黑马程序员Java基础--类与对象摘要: Java基础--类与对象这些是黑马程序员java基础入门的一个很重要的内容。

今天主要给大家简单讲解一下Java基础--类与对象,以后会慢慢讲解黑马程序员的课程内容!一、类与对象类是对一类事物描述,是抽象的、概念上的定义。

对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

类和对象举例[AppleScript] 纯文本查看复制代码?01020304050607080910111213141516171819 /***@author 传智播客*///定义一个类public classAnimal {private String name;private int legs;public void eat(){System.out.println("Eating.");}public void move(){System.out.println("Moving.");}}//声明并创建一个Animal类的对象,将该对象命名为xx Animal xx =newAnimal();//调用对象的方法20 xx.eat();对象的创建和使用匿名对象我们也可以不定义对象的句柄,而直接调用这个对象的方法。

这样的对象叫做匿名对象,如:new Person().shout();如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。

我们经常将匿名对象作为实参传递给一个函数调用。

信息的封装和隐藏Java中通过将数据声明为私有的(private),再提供公开的(public)方法:getXXX和setXXX 实现对该属性的操作,以实现下述目的:1、隐藏一个类的实现细节;2、使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;3、便于修改,增强代码的可维护性;二、构造器构造器的特征与作用特征:它具有与类相同的名称;它不含返回值;注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调了。

黑马程序员:【Java基础】面向对象(9)----final总结

黑马程序员:【Java基础】面向对象(9)----final总结

final在Java中声明属性、方法和类时,可使用关键字final来修饰。

final变量即为常量,只能赋值一次;final方法不能被子类重写;final类不能被继承。

1. final变量声明final 字段有助于优化器作出更好的优化决定,因为如果编译器知道字段的值不会更改,那么它能安全地在寄存器中高速缓存该值。

final 字段还通过让编译器强制该字段为只读来提供额外的安全级别。

其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。

这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。

一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。

当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

另外方法中的内部类在用到方法中的参变量时,此参变也必须声明为final才可使用。

在java中,普通变量系统是自动初始化的,数值变量自动初始化为0,其余类型变量自动初始化为空。

但是final类型的变量必须显示初始化,且初始化的方法必须是在申明时或者在构造方法中直接赋值,而不能通过调用函数赋值。

2. final方法如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。

使用final方法的原因有二:第一、把方法锁定,防止任何继承类修改它的意义和实现。

第二、高效。

编译器在遇到调用final方法时候会转入内嵌inline机制,大大提高执行效率。

注意,类中所有的private方法都被隐含是final的。

由于无法取用private方法,则也无法重载之。

3. final类final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。

在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

【黑马程序员】Java基础:Java语句笔记

【黑马程序员】Java基础:Java语句笔记

【黑马程序员】Java基础:Java语句笔记第一篇:【黑马程序员】Java基础: Java语句笔记【黑马程序员】Java基础: Java语句笔记摘要: Java基础—java语句这些是黑马程序员java基础入门的一个很重要的内容。

今天主要给大家简单讲解一下Java基础—java语句,以后会慢慢讲解黑马程序员的课程内容!关键语句介绍一、while 语句一般形式:whi l e ( 条件表达式 ) { 语句体……… } 执行过程:条件表达式为真,执行语句体。

否则,退出!二、do while 语句一般形式: do { 语句体……. } while ( 条件表达式 ); 执行过程:先执行一次语句体,判断条件表达式是否为真,为真再执行do语句中的语句体。

为假,退出。

需要注意:与whi l e语句区别黑马程序员合肥中心编著1. while ( 条件表达式 ) 后面有分号 ;2. 不管条件表达式是否为真,语句体均会执行一次。

三、for 语句一般形式:for( 子句 1; 子句 2; 子句 3) { 语句体…… } 执行过程:四、break 、 cont inue 语句 break 退出所在循环 : int stopHere = 5; for(int i=1; i<8; i++) { if(i == stopHere) { break; } System.out.println("i = " + i);黑马程序员合肥中心编著} //打印结果:5,6,7,8均没有打印出来。

需要注意的一个问题: int stopHere = 5; for(int i = 1; i < 8; i + + ) { if (i = = stopHere) { / /语句体 } break; System. out . println("i = " + i ); } 这个时候编译器会报错:无效的 System.out 输出语句。

黑马程序员_面向对象

黑马程序员_面向对象

黑马程序员_面向对象----------- android培训、java培训、期待与您交流!-----------1. 面向对象概念1)理解面向对象面向对象是相对面向过程而言;面向对象和面向过程都是一种思想。

面向过程•强调的是功能行为面向对象•将功能封装进对象,强调具备了功能的对象。

面向对象是基于面向过程的。

2)面向对象的特点是一种符合人们思考习惯的思想;可以将复杂的事情简单化;将程序员从执行者转换成了指挥者。

完成需求时:•先要去找具有所需的功能的对象来用。

•如果该对象不存在,那么创建一个具有所需功能的对象。

•这样简化开发并提高复用。

3)面向对象开发,设计,特征开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。

设计的过程:其实就是在管理和维护对象之间的关系。

面向对象的特征:•封装(encapsulation)•继承(inheritance)•多态(polymorphism)2. 类与对象的关系使用计算机语言就是不断的在描述现实生活中的事物。

java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。

对象即是该类事物实实在在存在的个体。

1)类与对象关系例如:•类就是图纸•汽车就是堆内存中的对象2)类的定义生活中描述事物无非就是描述事物的属性和行为。

•如:人有身高,体重等属性,有说话,打球等行为。

Java中用类class来描述事物也是如此。

•属性:对应类中的成员变量。

•行为:对应类中的成员函数。

定义类其实在定义类中的成员(成员变量和成员函数)。

3)成员变量和局部变量的区别?成员变量:•成员变量定义在类中,在整个类中都可以被访问。

•成员变量随着对象的建立而建立,存在于对象所在的堆内存中。

•成员变量有默认初始化值。

局部变量:•局部变量只定义在局部范围内,如:函数内,语句内等。

•局部变量存在于栈内存中。

•作用的范围结束,变量空间会自动释放。

•局部变量没有默认初始化值。

4)创建对象,使用对象class Car//对Car这类事物进行描述{String color = "red";int num = 4;void show(){System.out.println("color="+color+"..num="+num);}class CarDemo{public static void main(String[] args){Car c = new Car(); //建立对象c.color = "black"; //对对象的属性进行修改c.show(); //使用对象的功能。

黑马程序员:【java基础】面向对象--异样总结

黑马程序员:【java基础】面向对象--异样总结

异样处置是程序设计中一个超级重要的方面,也是程序设计的一大难点,Java中有异样处置的框架,接下来针对异样进行讲解。

一、Java异样的基础知识异样是程序中的一些错误,但并非是所有的错误都是异样,而且错误有时候是可以避免的。

比如说,你的代码少了一个分号,那么运行出来结果是错误ng.Error;若是你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出ng.ArithmeticException的异样。

有些异样需要做处置,有些则不需要捕捉处置,后面会详细讲到。

天有意外风云,人有旦夕祸福,Java的程序代码也如此。

在编程进程中,首先应当尽可能去避免错误和异样发生,对于不可避免、不可预测的情况则在考虑异样发生时如何处置。

Java中的异样常利用对象来表示。

Java对异样的处置是按异样分类处置的,不同异样有不同的分类,每种异样都对应一个类型(class),每一个异样都对应一个异样(类的)对象。

异样类从哪里来?有两个来源,一是Java语言本身概念的一些大体异样类型,二是用户通过继承Exception类或其子类自己概念的异样。

Exception 类及其子类是Throwable 的一种形式,它指出了合理的应用程序想要捕捉的条件。

异样的对象从哪里来呢?有两个来源,一是Java运行时环境自动抛出系统生成的异样,而无论你是不是愿意捕捉和处置,它总要被抛出!比如除数为0的异样。

二是程序员自己抛出的异样,这个异样可以是程序员自己概念的,也可以是Java语言中概念的,用throw 关键字抛出异样,这种异样常常利用来向挪用者汇报异样的一些信息。

异样是针对方式来讲的,抛出、声明抛出、捕捉和处置异样都是在方式中进行的。

Java异样处置通过5个关键字try、catch、throw、throws、finally进行管理。

大体进程是用try语句块包住要监视的语句,若是在try语句块内出现异样,则异样会被抛出,你的代码在catch语句块中可以捕捉到这个异样并做处置;还有以部份系统生成的异样在Java运行时自动抛出。

黑马程序员:【Java基础】面向对象(3)-构造方法

黑马程序员:【Java基础】面向对象(3)-构造方法

在类中除了成员方法外,还存在一种特殊类型的方法,那就是构造方法。

构造方法和成员方法一样,可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用)。

不同的是,构造方法不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。

下面接着来认识一下构造方法和方法的区别:构造方法要与类名相同,无返回类型,也不需要void,构造方法是在类初始化的时候调用。

而方法最好与类名不同,它是通过对象调用,静态方法可使用类名.方法()。

介绍了构造方法和成员方法的不同,下面就开始构造方法的学习喽~构造方法的概念及其用途:。

在Java中,任何变量在被使用前都必须先设置初值.Java提供了为类的成员变量赋初值的专门方法:构造方法(constructor),它不仅用来构造出一个类的实例,而且对构造出来的类的实例(对象)初始化。

构造方法的语法定义格式如下:public book(){// …构造方法体}参数说明:public:构造方法的修饰符;book:构造方法的名称在构造方法中可以为成员变量赋值,这样当实例化一个本类对象时,相应的成员变量也被初始化。

如果在类中没有明确定义构造方法,则编译器会自动创建一个不带参数的默认构造方法。

如果类中定义的构造方法都是有参的构造方法,则编译器不会设置一个默认的的无参构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。

所以,只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。

通过构造方法创建对象在java中,创建对象包括声明对象和为对象分配内存两部分,下面分别进行介绍。

1.声明对象对象是类的实例,属于某个已经声明的类,因此在对对象声明之前,一定要先定义该对象的类,声明对象的格式如下:类名对象名;其中,类名是必选的,用于指定一个已经定义好的类;对象名也是必选的,用于指定对象名称,对象名必须是合法的Java标识符。

【黑马程序员】跟我学Java——基础篇

【黑马程序员】跟我学Java——基础篇

【黑马程序员】跟我学Java——基础篇前言:在上一篇文章了我们已经介绍了Java的一些基本知识以及Java的第一个小案例,今天咱们接着上文继续介绍一些简单的配置,以及部分Java的基础语法。

1. 环境变量的配置:a) 我们目前想要运行一个HelloWorld案例只能在JDK安装路径的bin目录下编写代码以及对程序的编译运行,那么后期咱们会有非常多的java文件,如果都放在bin目录下肯定不合适,于是我们就想:能不能做到在任意的路径下的java文件都能被编译运行呢?答案当然是:可以!接下来我们就通过配置环境变量来达到在任意路径下的java文件都能被编译。

b) 如何配置:i. 在windows桌面找到计算机图标——右击——属性——高级系统设置——环境变量ii. 在系统变量那一栏选择新建——在变量名处填写JAVA_HOMEiii. 在变量值处填写jdk的安装路径iv. 找到一个叫path的系统变量,在path变量的变量值最前端添加一个 %JAVA_HOME%bin;c) 测试是否配置成功:i. 在任意的路径下打开DOS控制台,输入java,如果有相应的操作提示,证明已经配置成功,如果提示”java不是内部或外部命令,也不是可运行的程序或批处理文件。

”则配置失败,重新检查以上配置步骤d) 那么配置成功后,我们就能成功编译运行任意位置的Java程序了。

在之前的第一个Java案例中,我们编写了一段代码成功的在控制台输出了一段文字,但是我们还不太了解这些代码的意义,所以,接下来的篇章我们要介绍一些Java语言的基础语法,让我们能理解代码的含义,以及为后期编写复杂的代码打下基础。

本章一下内容介绍Java的注释、常量、变量、数据类型等相关语法。

2. Java中的注释:a) 什么是注释:i. 我们的Java代码都是用英文编写的,一旦功能比较复杂,那么就没那么容易看懂,所以有的时候我们需要写一些对代码的解释说明性的文字。

黑马程序员:Java基础之面向对象资料

黑马程序员:Java基础之面向对象资料

昨天学习了java基础语法,现在重头戏来了~java真正的核心思想!会贯穿整个java开发人员的一生哦!面向对象:★★★★★(核心特点:1:将复杂的事情简单化。

2:面向对象将以前的过程中的执行者,变成了指挥者。

3:面向对象这种思想是符合现在人们思考习惯的一种思想。

过程和对象在我们的程序中是如何体现的呢?过程其实就是函数;对象是将函数等一些内容进行了封装。

匿名对象使用场景:1:当对方法只进行一次调用的时候,可以使用匿名对象。

(2:当对象对成员进行多次调用时,不能使用匿名对象。

必须给对象起名字。

在类中定义其实都称之为成员。

成员有两种:1:成员变量:其实对应的就是事物的属性。

2:成员函数:其实对应的就是事物的行为。

所以,其实定义类,就是在定义成员变量和成员函数。

但是在定义前,必须先要对事物进行属性和行为的分析,才可以用代码来体现。

private int age;//私有的访问权限最低,只有在本类中的访问有效。

注意:私有仅仅是封装的一种体现形式而已。

私有的成员:其他类不能直接创建对象访问,所以只有通过本类对外提供具体的访问方式来完成对私有的访问,可以通过对外提供函数的形式对其进行访问。

好处:可以在函数中加入逻辑判断等操作,对数据进行判断等操作。

总结:开发时,记住,属性是用于存储数据的,直接被访问,容易出现安全隐患,所以,类中的属性通常被私有化,并对外提供公共的访问方法。

这个方法一般有两个,规范写法:对于属性 xxx,可以使用setXXX(,getXXX(对其进行操作。

(JavaBean类首次出现哦类中怎么没有定义主函数呢?注意:主函数的存在,仅为该类是否需要独立运行,如果不需要,主函数是不用定义的。

主函数的解释:保证所在类的独立运行,是程序的入口,被jvm调用。

成员变量和局部变量的区别:1:成员变量直接定义在类中。

局部变量定义在方法中,参数上,语句中。

2:成员变量在这个类中有效。

局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。

黑马程序员:java基础之面向对象-继承

黑马程序员:java基础之面向对象-继承

同学们,昨天我们学习了java面向对象的封装,下面我们来学习java面向对象剩下的两大特征:继承和多态继承)好处:1:提高了代码的复用性。

2:让类与类之间产生了关系,提供了另一个特征多态的前提。

父类的由来:其实是由多个类不断向上抽取共性内容而来的。

java中对于继承,java只支持单继承。

java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。

为什么不支持多继承呢?因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?因为父类中的方法中存在方法体。

但是java支持多重继承。

A继承B B继承C C继承D。

多重继承的出现,就有了继承体系。

体系中的顶层父类是通过不断向上抽取而来的。

它里面定义的该体系最基本最共性内容的功能。

所以,一个体系要想被使用,直接查阅该系统中的父类的功能即可知道该体系的基本用法。

那么想要使用一个体系时,需要建立对象。

建议建立最子类对象,因为最子类不仅可以使用父类中的功能。

还可以使用子类特有的一些功能。

简单说:对于一个继承体系的使用,查阅顶层父类中的内容,创建最底层子类的对象。

子父类出现后,类中的成员都有了哪些特点:1:成员变量。

当子父类中出现一样的属性时,子类类型的对象,调用该属性,值是子类的属性值。

如果想要调用父类中的属性值,需要使用一个关键字:superThis:代表是本类类型的对象引用。

Super:代表是子类所属的父类中的内存空间引用。

注意:子父类中通常是不会出现同名成员变量的,因为父类中只要定义了,子类就不用在定义了,直接继承过来用就可以了。

2:成员函数。

当子父类中出现了一模一样的方法时,建立子类对象会运行子类中的方法。

好像父类中的方法被覆盖掉一样。

所以这种情况,是函数的另一个特性:覆盖(复写,重写)什么时候使用覆盖呢?当一个类的功能内容需要修改时,可以通过覆盖来实现。

3:构造函数。

发现子类构造函数运行时,先运行了父类的构造函数。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文档注释
示例:
1./**
2.* 建立一个用于操作数组的工具类,其中包含着常见的对数组操作的函数,如:最值,排序等。

3.* @author 张三
4.* @version v1.0
5.*/
6.public class ArrayTool{
7. private ArrayTool(){}
8.
9. /**
10. * 获取整型数组的最大值
11. * @param arr 接收一个元素为int 类型的数组
12. * @Return 该数组的最大的元素值
13. */
14. public static int getMax(int[] arr){
15. int maxIndex = 0;
16. for(int x = 1; x < arr.length; x++){
17. if(arr[x] > arr[maxIndex])
18. maxIndex = x;
19. }
20. return arr[maxIndex];
21. }
22.
23. /**
24. * 对数组进行选择排序
25. * @param arr 接收一个元素为int 的数组
26. */
27. public static void selectSort(int[] arr){
28. for(int x = 0; x <arr.length -1; x++){
29. for(int y = x + 1; y < arr.length; y++){
30. if(arr[x] > arr[y])
31. swap(arr,x,y);
32. }
33. }
34. }
35.
36. //用于给数组进行元素的位置置换。

37. private static void swap(int[] arr, int a,int b){
38. int temp = arr[a];
39. arr[a] = arr[b];
40. arr[b] = temp;
41. }
42.
43. /**
44. * 获取指定的元素在指定数组中的索引
45. * @param arr 接收一个元素为int 类型的数组
46. * @param key 要找的元素
47. * @return 返回该元素第一次出现的位置,如果不存在则返回 -1
48. */
49. public static int getIndex(int[] arr, int key){
50. for(int x = 0; x < arr.length; x++){
51. if(arr[x] == key)
52. return x;
53. }
54. return -1;
55. }
56.
57. /**
58. * 将int数组转换成字符串,格式是:[e1,e2,...]
59. * @param arr 接收一个元素为int类型的数组
60. * @return 返回该数组的字符串表现形式
61. */
62. public static String arrayToString(int[] arr){
63. String str = "[";
64.
65. for(int x = 0; x < arr.length; x++){
66. if(x != arr.length - 1)
67. str = str + arr[x] + ",";
68. else
69. str = str + arr[x] + "]";
70. }
71. return str;
72. }
73.}
74.
运行结果:
P.S.
1、如果想把一个类进行文档化,该类必须是public的。

2、私有的方法在文档中不会体现,例如ArrayTool类中的swap方法。

相关文档
最新文档