第八章总结

类名冲突

java中每个接口或者是类都来自不同的类包,无论是java API 中的类与接口还是自定义的类与接口,都属于一个包,这个类包 包含了一些类和接口。

两个类所实现的功能完全不同,于是问题就产生了编译器是不会允许存在同名的类文件。解决问题的方法是放在不同的类包中

完整的类路径

 在程序中使用两个不同Date类的完整的类路径,可以使用如下代码:

java.util.Date date=new java.util.Date();

java.sql.Date date2=new java.sql.Date(1000);

创建包

例子:

点击eclipse中复制其在的位置,在文件中查找 是否存在其创建的项目和类

Name:ba1 

在eclipse中创建应该项目为ba                  在ba中的src中创建一个class :ba1

在ba1中创建一个class为T1

            ( file中新建项目和类 )

在ba1中创建一个项目ba2    在 b2中创建一个class为T2    

 

 创建自定义Math类

package com.mr;//指定包名
 
public class Math {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
System.out.println("不是java.lang.Math类,而是com.mr.Math类");
    }
 
}

运行结果为:

不是java.lang.Math类,而是com.mr.Math类

导入包

  使用import关键字导入包

  如果在程序中使用import关键字导入com.mr.Math类,在程序使用Math类时就会自动选择com.mr.Math类。语法如下:

import com.mr.*;//导入com.mr包中所有类
import com.mr.Math//导入com.mr包中Math类

使用import导入静态成员

  语法

import static 静态成员

例子: 

 package com.mr;
import static java.lang.Math.max;
//导入静态成员方法
import static java.lang.System.out;
//导入静态成员变量
public class ImportText {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        out.println("1和4的较大值为:"+ max(1,4));
        //主方法中可以直接使用这些静态成员
    }
 
}

运行结果为:

1和4的较大值为:4 

内部类

成员内部类

class OutrClass{//内部类

         class InnerClass{//外部类

}

}

例子:

public class Car {//创建汽车类
//成员变量
	private String brand;//汽车品牌
	//成员方法
	public Car(String brand) {//汽车类的构造方法,参数为汽车汽车品牌
		this.brand=brand;//给汽车品牌赋值
	}
	//成员内部
class Engine{//发动机
	//成员变量
	String model;发动机型号
	public Engine(String model) {//发动机类的构造方法,参数为发动机型号
		this.model=model;//给发动机型号赋值
	}
public void ignite() {//点火方法
	System.out.println("发动机"+this.model+"点火");
	}}
public void start() {//启动方法
	System.out.println("启动"+this.brand);
	}
public static void main(String[] args) {
	Car car=new Car("大众朗行");//创建汽车类对象,并为汽车品牌赋值
	car.start();//汽车类对象调用启动方法
	//创建发动机类对象,并为发动机型号赋值
	Car.Engine engine =car.new Engine("EA211");
	engine.ignite();//发动机类对象调用点火方法
   }
}

运行结果为:

启动大众朗行

发动机EA211点火

成员内部不止可以在外部类中使用,在其他类中也可以使用。在其他类中创建内部类对象的语法非常特殊,语法:

外部类 outer =new 外部类();

外部类.内部类 inner = outer.new 内部类();

使用this关键字获取内部类与外部类的引用

如果在外部类中定义的成员变量和内部类的成员变量名称相同,可以使用this关键字

例子:

匿名内部类

 匿名类是只创建对象时编写类体的一种写法。特点是“现用现学”,语法:

new 父类/父接口(){

子类实现的内容

};

补全抽象方法中少的方法体

 运行结果;

使用匿名类时一个遵循以下原则:

(1)匿名类不能写构造方法

(2)匿名类不能定义静态的成员

(3)如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被Java虚拟销毁 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值