java学习归纳

上传人:第*** 文档编号:34198990 上传时间:2018-02-21 格式:DOC 页数:37 大小:175.50KB
返回 下载 相关 举报
java学习归纳_第1页
第1页 / 共37页
java学习归纳_第2页
第2页 / 共37页
java学习归纳_第3页
第3页 / 共37页
java学习归纳_第4页
第4页 / 共37页
java学习归纳_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《java学习归纳》由会员分享,可在线阅读,更多相关《java学习归纳(37页珍藏版)》请在金锄头文库上搜索。

1、数组类型静态初始化Type arrayName =element1,element2.动态初始化arrayName =new type length类和对象定义类各成员之间可以相互调用,但 static 修饰的成员不能访问没有 static 修饰的成员.有 static 修饰的成员属于类本身,没有的成员属于该类的实例调用 static 修饰的成员,用 类 作为主调 (即前面用类开头)调用非 static 修饰的成员,用 this 作为主调(即前面用 this 开头)方法详解成员变量和局部变量成员变量:类里定义的变量 (包括实例变量,类变量)局部变量:方法里定义的变量(包括形参,方法局部变量,代

2、码块局部变量)如果方法里的局部变量跟成员变量同名,局部变量会覆盖成员变量如果需要这个方法里引用被覆盖的成员变量,则可使用 this(对于实例变量)或类(对于类变量)作为调用者来限定访问成员变量。使用访问控制符Private 修饰成员变量最合适Default 访问控制的成员或外部类可以被相同包下的其他类访问Protected 成员即可以被同一个包中的其他类访问,也可以被不同包中的子类访问。通常是希望其子类来重写这个方法。Public 可以被所有类访问。 (只有一些 static 修饰的,类似全局变量的成员变量,才可能考虑使用 public 修饰)Package,import 和 import s

3、taticPackage一组相关功能的类放在同一个 package 下使用:在 java 源代码的第一个非注释行放置如下代码package packageName;-d 用于设置编译生成 class 文件的保存位置-d. 代表当前路径(同一个包中的类不必位于相同的目录下)同一个包下的类可以自由访问,无须加包前缀Import用于导入制定包层次下的某个类或全部类import package.subpackage.ClassName; 导入某个类import package.subpackage.*; 导入全部类import static静态导入用于导入指定类的单个或全部 静态成员变量,方法impo

4、rt static package.subpackage.ClassName.fieldName|methodName;import static package.subpackage.ClassName.*;*使用 import 可以省略写包名 , 使用 import static 可以省略写类名深入构造器构造器里的 this 代表它进行初始化的对象构造器必须与类名相同构造器不能直接被调用,构造器必须使用 new 关键字来调用在构造器 B 中调用构造器 A 中的初始代码,可以使用 this 关键字来调用相应的构造器使用 this 调用另一个重载的的构造器只能在构造器中使用,而且必须作为构造器

5、执行体的第一条语句。类的继承继承的特点:子类不能获得父类的构造器重写父类的方法重写即子类把父类同名的方法覆盖在子类方法中调用父类被覆盖的方法,则可以使用 super 或 父类类名如果父类方法具有 private 访问权限,子类无法访问,无法重写(super 可以与 this 对比)多态多态性编译时类型是 BaseClass,运行时类型是 SubClass,就出现多态了。多态简言之:BaseClass a = new SubClass()编译类型 运行类型引用变量时只能调用编译类型中具有的方法,但运行时执行它运行时类型所具有的方法(父类有,子类有,方法用子类的 父类有,子类没,方法用父类的父类没

6、,子类有,编译失败)对象的实例变量不具备多态性。因为通过引用变量来访问其包含的实例变量时,系统总是试图访问它编译时类型所定义的成员变量,而不是它运行时类型所定义的成员变量。引用变量的强制类型转换引用变量只能调用它编译时类型的方法,而不能调用它运行时类型的方法。如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例才行(即编译时类型是父类类型,而运行时类型是子类类型)继承与组合使用继承的注意点不希望子类重写该方法,用 final 修饰符希望父类某个方法被子类重写,但不希望被其他类自由访问,用 protected 来修饰。何时需要父类派生新的子类?1.子类需要额外增加属性,而不仅仅是

7、属性的改变。2.子类需要增加自己的独有的行为方式。利用组合实现复用详见 055.8CompositeTest.java书 P154继承表达的是一种“是”的关系,组合表达的是一种“有”的关系初始化块使用初始化块初始化块要么不带任何修饰符,要带修饰符只能带 static。初始化顺序:先执行初始化块或声明实例变量时指定的初始值;再执行构造器里指定的初始值初始化块和构造器与构造器不同,初始化快是一段固定执行的代码,它不能接收任何参数。静态初始化块静态初始化块不能对实例变量进行初始化处理(普通初始化块负责对对象执行初始化,静态初始化块负责对类进行初始化)处理对象toString 方法toString 方

8、法总是返回该对象实现类的“类名+hashCode”值,但这个描述不能真正实现自我描述,因此如果用户需要自定义类能实现自我描述,就必须重写 Object 类的 toString 方法。=和 equals 方法当使用= 来判断两个变量是否相等时,如果 两个变量是基本类型变量,且都是数值型,只要两个变量的值相等 ,就返回 true;但如果是两个引用类型变量,只要它们指向同一个对象,=判断才会返回 true。(Object 类中 equals 与=没区别,所以需要重写)String 重写了 Object 的 equals 方法,只要两个字符串所包含的字符序列相同,就返回 true。详见 P170fin

9、al 修饰符final 成员变量 Final 修饰的成员变量必须由程序员显示的指定初始值Final 修饰的实例变量,在普通初始化块或构造器中指定初始值;Final 修饰的类变量,在定义静态初始块或定义该类变量时指定初始值。final 方法和类 Final 修饰的方法不能被重写,但可以被重载;Final 修饰的类不可以有子类;抽象类抽象方法和抽象类有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法;抽象类不能被实例化;抽象类的构造器不能用于创建实例,主要用于被其子类调用;Abstract 修饰类,表明该类只能被继承Abstract 修饰方法,表明该方法必须由子类重写Abstract 不能

10、修饰成员变量,局部变量,构造器接口接口的定义接口定义的基本语法修饰符interface 接口名 extends 父接口 1,父接口 2.零个到多个常量定义.零个到多个抽象方法定义.零个到多个内部类,接口,枚举定义.零个到多个默认方法或类方法定义.接口里的方法都是抽象方法一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类接口里可以包含 成员变量:只能是静态常量方法:实例方法,类方法,默认方法内部类:内部接口,枚举定义接口成员时,可以省略访问控制修饰符,如果要指定,只能是 public常量默认 public static final 修饰方法默认 public abstract 修饰使用

11、接口实现接口的语法格式修饰符class 类名 extends 父类 implements 接口 1,接口 2.类体部分一个类实现了一个或多个接口后,这个类必须完全实现这些接口里定义的全部抽象方法;否则,该类将保留从父类接口哪里继承到的抽象方法,该类也必须定义成抽象类;一个类实现某个接口时,会获得接口中定义的常量,方法等注: 实现接口方法时,必须使用 public 修饰 ,因为接口里的方法都是 public 的,而子类重写父类方法时访问权限只能更大或相等接口和抽象类接口和抽象类都不能被实例化;接口和抽象类都可以包含抽象方法;接口与抽象类的差别详见 P195内部类内部类成员可以直接访问外部类的私有

12、数据内部类比外部类多三个修饰符 private ,protected ,static非静态内部类不能拥有静态成员非静态内部类public class Outerprivate int outProp = 9;class Innerprivate int inProp = 5;public void acessOuterProp()/内部类可以直接访问外部类的成员System.out.println(外部类的 outProp 属性值: + outProp);public void accessInnerProp()/外部类不能直接访问内部类属性,下面代码出现编译错误/System.out.pri

13、ntln(内部类的 inProp 属性值: + inProp);/如需访问内部类成员,必须显式创建内部类对象System.out.println(内部类的 inProp 属性值: + new Inner().inProp);public static void main(String args)/执行下面代码,只创建了外部类对象,还未创建内部类对象Outer out = new Outer();Inner in =new Inner();System.out.println(内部类的 inProp 属性值: +out.this.inProp);静态内部类用 static 修饰后,内部类就属于外

14、部类本身,而不是外部类的某个对象了。使用内部类1 在外部类使用内部类直接通过内部类的类名来定义变量通过 new 调用内部类构造器来创建实例2 在外部类以外来使用非静态内部类在外部类以外的地方定义内部类OuterClass.InnerClass varName在外部类以外的地方创建非静态内部类实例OuterInstance.new InnerConstructor()实例 构造器3 在外部类以外使用静态内部类因为静态内部类是外部类类相关的,所以创建静态内部类实例的语法如下new OuterClass.InnerConstrutor()匿名内部类匿名内部类适合创建那种只需要一次使用的类匿名内部类必

15、须也只能继承一个父类,或实现一个接口两条规则1 匿名内部类不能使抽象类2 匿名内部类不能定义构造器。因为匿名内部类没有类名,所以无法定义构造器枚举类继承的是 java.lang.Enum 类非抽象的枚举类默认使用 final 修饰,所以不能派生子类构造器默认 private 修饰单例模式单例模式的两种写法/*这个是先初始化对象。称为:饿汉式。Single 类一进内存,就已经创建好了对象。class Singleprivate static Single s = new Single();private Single()public static Single getInstance()retu

16、rn s;*/对象是方法被调用时,才初始化,也叫做对象的延时加载。成为:懒汉式。/Single 类进内存,对象还没有存在,只有调用了 getInstance 方法时,才建立对象。class Singleprivate static Single s = null;private Single()public static Single getInstance()if(s=null)synchronized(Single.class)if(s=null)s = new Single();return s;/记录原则:定义单例,建议使用 饿汉式 。异常异常体系:Throwable|-Error|-Exception|-RuntimeException异常体

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号