java学习--面向对象】的更多相关文章

基础知识 分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. 常见的分布式技术有:CORBA.DCOM和RMI. 其中,面向对象的远程方法调用(Remote Method Invocation,RMI)是Enterprise JavaBeans的支柱技术,是建立分布式Java应用程序的方便途径.RMI是Java的一组开发分布式应用程序的API,它使用Java语言接口定…
一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如JVM虚拟机出现的异常就是不可以处理的.可以处理的异常就是指,在我们java程序当中的数组最大索引超出啊,这些问题我们是可以处理的.同时异常也分为Error和Exception.从字面意义上来理解的话,可以理解成错误和异常.Error指在JVM运行当中出现异常,程序自动退出.下面我们来写个例子看下什…
之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名. 匿名对象回顾: class NoObject { void method() { System.out.println("Hello NoNameObj"); } } class NoName { public static void main(String[] args) { new NoObject().metho…
什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中. 那么内部类都有什么特点呢? 1.内部类可以访问包裹他的类的成员. 2.如果包裹他的类想访问被其包裹的类的话就得实例化,才可以访问. 代码示例: class Outer { ; void show() { System.out.println("Outer Show method!!"); } void method() { Inner a = new Inner(); a.innerShow(); }…
如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run() { System.out.println("I Run!"); } } class Dog extends Animal { public void eat() { System.out.println("I eat meat"); } public void lo…
上一节当中我们说道抽象类,抽象类当中的方法可以是抽象的也可以是非抽象的,那么当抽象类中所有方法都是抽象的时候,我们就可以把它重新定义为接口.代码示例: abstract class Animal { abstract void eat(); abstract void goToBed(); } 上述代码写成接口的形式为: interface Animals { public void eat(); public void goToBed(); } 在接口当中的方法,也只能是方法名称,没有方法体.…
在之前讲到java面向对象继承的时候,我们只讲到了两个比较重要的知识点,一个是父子类当中有同名的成员变量,这个时候,我们引入了super这个关键字来区分这两个同名成员变量,除此之外,我们还讲到了父子同名函数的覆盖,这父子同名函数必须是参数类型.个数相同,返回值也相同才可以,同时子类要覆盖后的成员方法的访问权限要大于等于父类当中的同名函数权限. 那么还有一个地方我们没有讲到,那就是父子当中的构造函数是怎样的? class Fu { Fu() { System.out.println("Fu chu…
在我们编写程序的过程当中,会遇到这种情况: 比如现在有一个狗,他的功能有跑,有跳,有吃,有叫,属性有雌雄,大小,颜色等等,同时现在我们也有一个猫,上述功能她也有.这个时候我们写代码的时候,就得分别把上述的功能给猫写一遍,也要给狗写一遍,这样合理么?这就违背了面向对象复用性的原则,为了解决这类问题,我们这里引入继承这个概念,那么什么是继承? 继承的概念:继承就是把某几个类具有相同属性或者功能的代码单独抽象出来放到一个类当中,当编写这些类的时候继承抽象出来的类,可以提高复用性,这个就是继承.比如说,…
对象及类的概念 对象是java程序的核心,在java程序中“万事万物皆对象” 对象可以看成是属性和方法的封装体 类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所应具有的属性和方法 J2SDK提供了很多类供变成人员使用,编程人员也可以定义自己的类 面向对象的编程------一组对象互相配合通过沟通完成特定的功能 引用-----引用是java面向对象基本概念,java中除基本类型之外的变量类型都称之为引用类型.java中的对象是通过引用对其操作的 类的定义主要有两方面组成:属性和方法 属…
面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包装类的 valueOf(String s)静态方法 包装类还提供多个重载 valueOf 方法将 基本类型变量 转换成字符串. 包装类型变量 可以与基本类型变量 进行值比较. 系统把一个-128-127之间的整数自动装箱成Integer实例,并放入了一个名为cache的数组中缓存起来.如果以后把一个…
我们知道当我们处理异常的时候,一个是声明,另外一个是捕捉. 捕捉:异常处理的捕捉方式,这是可以对异常进行针对性处理的方式.具体格式是: try { //需要被检测的异常 } catch(异常类 变量)//类似于函数,变量用来接受发生异常的对象的(参数) { //处理异常的代码块 } finally { //一定会被执行的代码 } 那么什么时候用捕捉,什么时候用声明呢?有的是把异常暴露出去,有的是不暴露异常. 我定义合理的功能,功能没有问题,你胡乱传入参数出现的异常,这个时候我就得把异常信息返回给…
什么是抽象类,之所以说抽象就是具体的反义词喽~抽象离我们最近的距离也就是初中的时候学过的美术课,抽象画派.拿一桶画彩就这么往画布上一泼,那就是抽象.那么java世界当中什么是抽象呢?我们再拿动物还有狗的这个例子来讲吧,因为这个非常的好理解.比如说,你可以说狗吃饭吧,然后小狗狗就去吃饭了.那么你能说,动物你去吃饭吧?这个就搞的我们有点迷糊了,动物怎么吃饭,动物是一个类的概括.就向你去菜市场买鸡吃,你冲老板说:我来买个动物.动物只是个概念而不是一个具体到某一个具体的类别的动物,这里动物这个概念就是抽…
就像上一节当中我们讲到的数组工具集一样,如果我们把他看作一个类,来应用,不阻止他new函数的话,这个类我们在整个过程当中我们只是用他来当一个工具.假如每次用都要new一下产生一个新对象的话,就会显得整体很浪费内存,那么能不能让这个对象在整个过程当中只产生一个实例供我们来使用呢,因为只要整个过程一个实例就够用了. 有,那就是单例设计模式. 在说单例设计模式之前,我们来看一下什么是设计模式.所谓的设计模式,就是前人在解决生活中常见问题时,抽象出来的一些思考的方法,这种思考的方法能够加快我们软件的构建…
讲完了this这个关键字,我们继续前进,这节我们讲另外一个比较重要的东东,java当中的static,在main函数前面这个家伙都在那里一直挺着,你瞅见了么,你就不好奇么,你就不想知道他杵在那里做什么么?好,我们来看下,他到底是作什么的. 看一下我们的代码: class StaticDemo { int name: String country: void speak() { System.out.print(name+"sssss"+country); } } class Stati…
在我们讲构造函数的时候,我们知道,如果同时在java的堆内存当中,同时存在好几个刚进内存,但是又没来得及初始化的同一个类的对象.在这种情况下,那么如何去区分栈内存当中的构造函数是属于那个对象的呢,其实从底层上来讲的话,JVM已经为我们分好了,然后给了我们一个this,这个this是一个关键字,也是区分调用该构造函数的时候,此时的构造函数的所属对象是谁. 示例: class ThisDemo { int num; String name; ThisDemo(int n) { num = n; }…
在java当中目前我们学到的一个比较特殊的函数就是main函数,他是JVM执行的入口,所以书写的格式是固定的,现在我们来介绍java中另一个比较特殊的函数: 构造函数:构造对象的时候调用的函数,作用,给对象进行初始化.   创建对象的时候必须用构造函数进行初始化,但不显示的声明构造函数的时候,默认会有一个空参数的构造函数: Person() { } 如果显式声明一个构造函数的时候,类就调用这个构造函数.同时,那个原来默认的构造函数也会被取消,函数的相同不相同就跟类名还有参数的个数和顺序决定的.…
1. 继承  java的类是单继承(一个子类只能继承一个父类),不能多继承(多个父类):A继承自B,A也继承自C,可以多重继承,就是A继承自B,B继承自C(A->B->C), 所有的类都继承于java.lang.Object. 子类继承父类中非private的属性和方法. 子类不能继承父类的构造器(构造方法或者构造函数). 如果父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的当属列表.如果父类有无参构造器,则在子类的构造器中用super调用父…
package 软件包 类名前加入命名空间(包),解决命名冲突问题. 定义格式:公司域名倒叙.项目名.模块名; package语句写在文件第一行 使用import语句导入package java.lang; 软件包下的所有类系统自动导入. 编译 javac -d 生成路径 java源文件路径 运行 java 完整类名 内部类 基本 定义:类里面的类. 好处:内部类可以访问其外部类的私有数据. 分为 :静态内部类,成员内部类,局部内部类,匿名内部类 静态内部类 调用静态内部类的静态方法: Oute…
super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在静态方法中. 使用场景: 子类和父类都有某个数据,如果要在子类中访问父类中的数据,需要使用super(如super.name).(默认是this,即this.name , 访问的是子类中的数据). 2 可以用在构造方法中. 语法: super(实参) 一个构造方法第一行如果没有显示地调用this()…
多态 多态发生条件 发生在有继承关系的类型中. 向上转型(自动类型转换)与向下转型(强制类型转换) //向上转型 //编译阶段a1被编译器看作是Animal类型,所以a1引用绑定的是Animal类中的eat方法(静态绑定) //运行阶段堆中的对象实际是Cat类型,a1绑定的是Cat中的eat方法(动态绑定) Animal a1=new Cat(); a1.eat(); //向下转型 Animal a2=new Cat(); Cat c1=(Cat)a2; c1.move(); //向下转型 //…
一.类的继承 实现方法: public Class SubClass extends SuperClass{ } 继承最基本作用: 代码重用. 继承最重要的作用: 方法可以重写. 关于类的继承: 子类将继承父类除构造方法外的所有数据和方法,包括私有的. 但子类无法直接访问父类中的私有数据,可以通过方法间接访问. 若类无显式继承其他类,则默认继承SUN提供的java.lang.Object类. 二.方法的覆盖 定义 子类将父类中方法重写 使用场景 父类方法无法满足子类使用需求. 发生覆盖的条件 发…
之前我们讲过继承的相关知识了,继承就是子类继承父类的属性和方法并且还可以覆盖父类的方法.但是这样有一个缺陷是什么呢,就是当我们一个类当中涉及一些封装的核心的东西或者对整个系统非常关键的方法或者类的时候,这个时候如果子类覆盖掉父类的方法将会对我们带来安全隐患.为了能够继承父类的方法,同时又能够保证我们类的安全性,这个时候我们就用到了final这个关键字. final关键字之一: final从字面意思上来理解的话,就是最后的意思,也就是说这个方法一经定义之后,就是最后的,不能更改的.当我们用这个关键…
上一节当中描述了static的用法,以及成员变量和静态变量的区别.但是static除了可以修饰成员变量使之成为静态变量外,他还可以同时修饰函数,使之成为静态函数,我们来看一个例子: class StaticDemo { String name; int a ; static String xiangmu="xiangmu"; /** *这个方法被static关键词修饰之后,就变成了静态方法,这里我们需要注意的一点就是static声明的方法当中,只能够调用 *静态变量,因为他是在类没有被…
在以往几节当中我们讲到了什么是类,类就是对一类事物的描述,比如现在我们有一个人类 class Person { /** *这里我们分别在name和age上加上了元素的访问权限 *这里的private是指,这个变量只能被当前类访问,其他的地方是没法访问到的,即使是当前类的一个实例化对象 *也是没法访问的.那么这里就有一个问题了,我们定义了一个成员变量确没法访问: *这里举一个详细的例子来讲: *我们有一个房子,房子里面放了很多的钱,我们的房子有一个门.在我们没有给这个门加任何的限制的时候,任何人…
抽象类 语法 public abstract class A{ } 定义 抽象类无法实例化.但抽象类有构造方法,在子类创建对象时用. 抽象类中可以定义抽象方法public abstract void methods();,不能有函数体.也只有抽象类中可以定义抽象方法. 接口 语法 [修饰符] interface 接口名{} 定义 接口也是一种引用类型,可以等同看作类. 不同的, 接口没有构造方法. 接口中只能出现常量和抽象方法.接口中常量的public static final 可省略 ,抽象方…
一.什么是Hessian Hessian 是一个基于 binary-RPC 实现的远程通讯 library.使用二进制传输数据.Hessian通常通过Web应用来提供服务,通过接口暴露.Servlet和Spring的DispatcherServlet都可以把请求转发给Hessian服务.由以下两种方式提供,分别为:com.caucho.hessian.server.HessianServlet.org.springframework.web.servlet.DispatcherServlet.…
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制只回收堆内存中的对象,不回收数据库连接.IO等资源,所以才要在finally中关闭 要回收,但什么时候回收是不一定的,即使显式的调用了System.gc() 垃圾回收程序在真正回收之前,会先调用被回收对象的finalize()方法,这是Object的protected方法,每个类都要继承的,这个方法…
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ public static void main(String[] args) { ProcessArray pa=new ProcessArray(); int[] target={5,35,-2,35,-21}; pa.process(target, new Command(){ //匿名内部类…
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 局部变量 修饰方法:该方法不可被重写 final修饰成员变量 final修饰成员变量,必须显式的指定初始值,系统不会为final成员进行隐式初始化,不能在初始化前访问. 因为,不管是类变量还是实例变量,都有个初始化的过程,初始化赋值后便不能再赋值,如果不显式的指定初始值,那么这些变量就没有存在的意义…
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静态变量 static修饰的变量为静态变量 在创建对象时,静态变量位于方法区中,而非像实例变量一样,位于堆内存中 一个类的所有对象共用相同静态变量,通过类名来调用静态变量,通过实例来调用虽然也符合语法,但不推荐 示例:静态变量的一个用法 class Employee{ private static i…