第一、JAVA语言语法之 三、static修饰符 四、final修饰符 五、接口 六、内类
2009-06-19 23:14
369 查看
三、static修饰符
3.1、静态变量
成员变量前加上static,叫类变量,被这个类创建的所有对象共有。在多个对象间共用数据时,可以使用这种方法3.2、静态方法
方法前加上static,该方法可以通过类的名字直接访问①静态方法只能访问类变量和方法参数,不能直接访问成员变量,否则编译出错
如果确实需要访问成员变量,可以先创建对象,再通过对象访问
②静态方法不能直接访问非静态的方法,否则编译出错
③静态方法不可被覆盖
1)如果父类有个方法是静态的,子类中有个方法与其名称、参数都相同,但不是静态的,这时编译出错
2)如果父类有个方法是静态的,子类中有个方法与其名称、参数都相同,但是静态的,这时编译能通过,但这种用法不是覆盖
3.3、静态初始化
static...{
代码
}
这段代码和成员变量、方法并列,在第一次创建对象时执行,以后都不再执行
四、final修饰符
4.1、final类
表明该类不可以有子类4.2、final方法
表示该方法不可以被覆盖,final只影响覆盖,不影响重载static、private方法和final方法一样,都不可以被覆盖,只是final编译时会报错,static、private不报错,但是也不会被覆盖
4.3、final变量
代表常量,只能赋值一次五、接口
5.1、抽象类——abstract修饰符
abstract用在类和方法定义中,表示类中有方法还没有写完,只写了方法的名称和参数,没有写方法的代码如:编写一个类,知道类中一定要有某个方法,但是该方法的细节还不能确定,只能在它的子类中才能确定,这个时候就使用abstract。
/**//*
**抽象类--abstract修饰符
*/
abstract class Vehicle...{//定义一个交通工具类
abstract int getFuel();//定义getFuel()方法计算油耗,抽象的,在子类中去实现
}
class Car extends vehicle...{//汽车
int getFuel()...{
//具体的油耗计算方法
}
}
class Bus extends vehicle...{ //工交车
int getFuel()...{
//具体的油耗计算方法
}
}
class Company...{//定义一个公司类
Vehicle fleet[];//定义一个车队,只要是交通工具都可以包含
void reportFuel(Company c)...{//统计车队每个月的耗油量
int fuel = 0;
for(int i = 0; i<c.length; i++)...{
fuel += fleet[i].getFuel();//则要求每种车都有个getFuel()方法来计算油耗
}
}
}
5.2、接口——interface
①当一个类中所有的方法都是抽象的,我们就把这个类定义为接口,所有的方法都只有方法名和参数③使用时通过类来实现,必须把接口中所有的方法都实现,如果不能完全实现,就说明该类还没有定义完,应该声明为抽象的类。
/**//*
**接口的实现--通过类来实现,若不能完全实现,则该类须定义为抽象类
*/
class aa implements xx,yy...{
public void tt()...{
//...
}
public void ss()...{
//...
}
public void mm()...{
//...
}
}
④使用接口,可以把不同类之间的相似点提取出来
如:鸟和飞机都有会飞的特点,需要定义一系列与飞相关的方法(如飞行高度、速度等),则定义一个接口
/**//*
**通过接口提取类的相似点
*/
interface Fly...{
public void getflyHeight();//高度
public void getflySudu();//速度
}
六、内类
内类又叫类的嵌套,把一个类定义在另一个的内部,与成员变量和方法并列,主要用于在内类中访问外类的成员变量。6.1、内类就象外类的方法一样,在静态方法中不能直接使用,需要先创建外类对象,通过外类的new类创建内类对象,在其他类中使用内类也应如此。
class Aa...{private int size;
class Bb...{
void tt()...{
size = 100;//内类中可以直接使用外类的成员变量
}
}
void ss()...{
Bb x = new Bb();//非静态方法中直接创建内类对象
}
public static void main(String ejing[])...{
Aa s = new Aa();//在静态方法中先创建外类对象
Bb y = s.new Bb();//再通过外类的new来创建内类对象
}
}
6.3、方法中定义内类
在包含内类的方法中,局部变量(常量除外)不能被内类直接访问/**//*
**方法中定义内类
*/
public class Aa...{
private int size;
void test()...{
int i;//包含内类的方法中,局部变量不能被内类访问
final int j = 102;//常量可以被内类访问
class Bb...{
void tt()...{
size = 100;
System.out.println(j);
}
}
Bb x = new Bb();
x.tt();
System.out.println(size);
}
public static void main(String ejing[])...{
Aa s = new Aa();
s.test();
}
}
6.4、内类可以定义为抽象的
6.5、静态内类
①只是位置在外类中,实际上是与外类并列,不能直接访问外类的成员变量②内类一般不可以定义静态的成员变量,但是静态内类可以
/**//*
**接口的定义
*/
public interface xx...{
public void tt();
public void ss();
}
②接口支持多重继承:一个子接口可以有多个父接口,突破类的单一继承限制
/**//*
**创建内类对象
*/
/**//*
**接口的多重继承
*/
interface xx...{
public void tt();
public void ss();
}
interface yy...{
public void mm();
}
interface zz extends xx,yy...{
}
相关文章推荐
- Java——static修饰符、final修饰符、abstract修饰符、接口
- java--static修饰符、final修饰符、abstract修饰符、接口
- Java——static修饰符、final修饰符、abstract修饰符、接口
- 我的Java之旅 第五课 JAVA 语言语法 集合
- 漫谈Java语言的接口与类型安全
- 自学 java笔记 day2 (语言语法基础组成1)
- Java动态调用脚本语言Groovy,完善接口配置
- 2018/01/07JAVA 基础 / 接口与继承:对象转型的意义、instanceof的语法
- Java基础第一阶段——04_Java语言基础_for语句&函数&数组
- java 接口的语法
- java语言基础(69)——集合框架(泛型的多种应用场景、泛型类、泛型方法、泛型接口)
- 深入java(类)抽象类和接口语法解答
- Java语言的接口与类型
- Java基础语法试卷5(2017/10/16 第一阶段考试)
- java语言基础(39)——面向对象(接口的引入及特点)
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 第二章:Java语言的基础语法
- 漫谈Java语言的接口与类型安全
- emacs插件flymake快速检查语法错误(C/C++,python,java,perl等语言)
- 5月编程语言排名,Java语言世界第一