您的位置:首页 > 编程语言 > Java开发

java学习笔记

2016-07-12 17:02 337 查看
1.

不正确的引用:

class StaticError{
String mystring=“hello”;
public static void main(String args[]) {
System.out.println(mystring);
}
}


编译时错误信息: nonstatic variable mystring cannot be referenced from a static context

为什么不正确:只有对象的方法可以访问对象的变量。

解决的办法 :将变量改成类变量

class StaticError{
static String mystring=“hello”;
public static void main(String args[]){
System.out.println(mystring);
}
}


2.

我们可以编写自己的类,也可以使用由系统提供的类库。下面列出了一些常用的Java包:

· java.lang包 基本语言类,程序运行时自动引入

· java.io包 所有的输入输出类

· java.util包 实用的数据类型类

· java.awt包 构建图形用户界面(GUI)的类

· java.awt.image包 处理和操纵网上图片的工具类

· java.awt.peer包 实现与平台无关的GUI的类

· java.applet包 实现Java Applet的工具类

· java.net包 实现网络功能的类

3.

域的隐藏

子类重新定义一个与从父类继承来的域变量完全相同的变量,称为域的隐藏。即子类中定义了与父类同名的域变量,就是子类变量对同名父类变量的隐藏。这里所谓隐藏是指子类拥有了两个相同名字的变量,一个来自继承父类,另一个由自己定义。在这种情况下,当子类执行继承的父类方法时,处理的是父类的变量,而当子类执行它自己定义的方法时,所操作的就是它自定义的变量,而把来自继承父类的变量“隐藏”起来了。

4.

方法的覆盖与域的隐藏的不同之处在于:子类隐藏父类的域只是使之不可见,父类的同名域在子类对象中仍然占有自己独立的内存空间;而子类方法对父类同名方法的覆盖将清除父类方法占用的内存空间,从而使父类方法在子类对象中不复存在。

5.

构造方法的继承

子类可以继承父类的构造方法,构造方法的继承遵循以下原则:

(1)子类无条件地继承父类的无参数的构造方法。

(2)如果子类没有定义构造方法,则它将继承父类的无参数构造方法作为自己的构造方法;如果子类定义了构造方法,则在创建新对象时,将先执行继承的父类无参数构造方法,然后再执行自己的构造方法。

(3)对于父类的带参数构造方法,子类可以通过在自己的构造方法中使用supper关键字来调用它,但这个调用语句必须是子类构造方法的第一个可执行语句。

下面我们主要讨论第2和第3点。

6.

研究一下接口与抽象类到底有什么区别是很有意义的。它们之间存在以下的区别:

(1)接口不能有任何实现了的方法,而抽象类可以。

(2)类可以继承(实现)许多接口,但只能继承一个父类。

(3)类有严格的层次结构,而接口没有层次结构,没有联系的类可以实现相同的接口。

7.

实现接口时应注意的问题:

(1)在类的声明部分,用implements关键字声明该类将要实现哪些接口。

(2)类在实现抽象方法时,必须用public修饰符。

(3)除抽象类以外,在类的定义部分必须为接口中所有的抽象方法定义方法体,且方法首部应该与接口中的定义完全一致。

(4)若实现某接口的类是abstract的抽象类,则它可以不实现该接口所有的方法。但是对于这个抽象类的任何一个非抽象子类,不允许存在未被实现的接口方法。即非抽象类中不能存在抽象方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java