第八章总结(包和内部类)

目录

1.java类包

1.类名冲突

2.完整的类路径

3.创建包

 4.导入包

2.内部类

1.成员内部类

1.成员内部简介

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

2.匿名内部类



包和内部类

Java类包内部类
类名冲突成员内部类
创建包☆匿名内部类
导入包

1.java类包

在java中每定义一个类,通过java编译器进行编译之后,都会生成一个扩展名为.class的文件。当程序的规模逐渐扩大时,就很容易发生类名称冲突的现象。

java中提供了一种管理类文件的机制,就是类包。

创建类包

 

 删除这个

1.类名冲突

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

2.完整的类路径

一个完整的类名需要包含与类名的组合,每个类的隶属一个类包,只要保证同一类包中的类同名,就可以有效地避免同名类冲突的情况。

3.创建包

(1)在项目的src节点上右击,选择‘新建’/‘包’命令(英文名为New/Package)。

(2)弹出‘新建java包’(New java Package)对话框,在‘名称’(Name)文本框中输入新建的包名,如package1,然后单击‘完成’(Finish)按钮。

 (3)在Eclipse中创建类时,可以在新建立的包上右击,选择‘新建’(New)命令,这样新建的类会默认保存在该包中。另外也可以在New java Class对话框中新建类所在的包。

在类中定义包名的语法:

package 包名

 1.创建自定义的Math类

package package1;

public class Test1 {
	public static void main(String[] args) {
		System.out.println("不是java.lang,Math类,而是Eighth.Math类");
	}
}

运行结果

 4.导入包

1.使用impost关键字导包

impost关键字的语法:

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

import com.mr.Math//导入com.mr包中的Math类

2.使用import导入静态成员

使用import导入静态成员的语法如下:

import static 静态成员

2.使用Import导入静态成员

package package2;

import java.util.Scanner;
import static java.lang.System.out;

public class Test2 {
	public static void main(String[] args) {
		//输入一个整数
		Scanner sc = new Scanner(System.in);//创建扫描器,获取控制台输入的值
		int a = sc.nextInt();
		//输出整数
		out.println(a);
		sc.close();
	}
}

2.内部类

1.成员内部类

1.成员内部简介

在一个类中使用内部类,可以在内部类中存取其所在类的私有成员变量。

在成员变量类中可以随意使用外部类的成员方法及成员变量,尽管这些类成员被修饰为private。

3.使用成员内部类模拟发动机点火

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 mian(String[] args) {
		Car car = new Car("大众朗行");//创建汽车类对象,并为汽车品牌赋值
		car.start();//汽车类对象调用启动(汽车)方法
		//创建发动机类(内部类)对象,并为发动机型号赋值
		Car.Engine engine = car.new Engine("EA211");
		engine.ignite();//发动机类对象调用(发动机)点火方法
	}
}

结果如下

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

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

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

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

4.在内部类中调用外部类对象

public class TheSameName {
	private int x = 7;	//外部类的x
	private class lnner{
		private int x = 9;//内部类的x
		private void doit() {
			int x = 11;//局部变量x
			x++;
			this.x++;//调用内部类的x
			TheSameName.this.x++;//调用外部类的x
		}
	}
}

2.匿名内部类

匿名类是只创建对象时才会编写类体的一种写法,匿名类的特点是“现用现写”,其语法如下:

new 父类/父接口(){

        子类实现的内容

}

5.使用匿名内部创建一个抽象狗类的对象

abstract class Dog{//抽象类
 String color;
 public abstract void call();//抽象方法
 public abstract void move();//抽象方法
}

public class Demo {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Dog wenin = new Dog() {
   //匿名内部类
   public void move(){
    System.out.println("四腿狂奔");
   }
   public void call() {
    System.out.println("嗷呜~");
   }
  };
  wenin.color = "灰色";
  wenin.move();
  wenin.call();
 }

}

结果如下

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

1.匿名类不能写构造方法

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值