第八章总结

文章详细介绍了Java中的类包机制,包括如何创建和导入包,以及如何避免类名冲突。同时,文章讨论了内部类的概念,如成员内部类和匿名内部类的使用,强调了内部类可以直接访问外部类的私有成员。此外,还提到了import关键字在导入静态成员时的作用。
摘要由CSDN通过智能技术生成

包和内部类

一、java类包

1、类名冲突

java中每一个接口或类都来自不同的类包,这个类包包含了一些类和接口,为了使两个同名的类文件的功能使用,需要将两个类放置在不同的类包中

2、完整的类路径

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

在java中采用类包机制非常重要,类包不仅可以解决类名冲突问题,还可以在开发庞大的应用程序时,帮助开发人员管理庞大的应用程序组件,方便软件复用。

3、创建包 

新建一个名为Ecilpse的文件,在Ecilpse中创建包,在项目src上右击,新建,选择package(包)命令

 取包名

在 package1下创建一个类

4、导入包

使用import关键字导入包 

语法:import com.mr*;        //导入com.mr包中的所有类

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

在使用import关键字时,可以加上指定类的完整描述,如果为了使用包中更多的类,可以在使用import关键字指定时在包指定后加上*,这表示可以在程序中使用该包的所有类。

使用import导入静态成员

import关键字除导入包外,还可以导入静态成员

语法:import static静态成员

作用:导入静态成员变量可以使编程更为方便

package Packages2;
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);
	System.out.print("输入一个整数:");
	int a=sc.nextInt();
	//输入一个整数
	out.print(a);
	//输出整数
	sc.close();//关闭扫描器
}
}

二、内部类

1、成员内部类

a、成员内部类简介

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

语法:

class OuterClass{        //外部类

class lnnerClass{        //内部类

        }
}

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

内部类的实例一定要绑定在外部类对象的实例,如果从外部类中初始化一个内部对象,那么内部类对象 就会绑定在外部类对象上。
内部类初始化方方式与其他类的初始化方法相同,用new关键词。

public class Car{//创建汽车类
	private String brand;//汽车品牌类
	public Car(String brand) {//汽车类的构造方法,参数为汽车品牌
		this.brand=brand;//给汽车品牌赋值
	}
	class Engine{//发动机类(内部类)
		String model;///发动机型号
		private String brand;
		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();//发动机类对象调用(发动机)点火方法
		
	}
}

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

语法:

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

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

 b、使用this方法关键字获取内部类与外部类的引用

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

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

如果在内部类与外部类的成员变量重名的情况,可以使用this关键字进行处理

2、匿名内部类

匿名内部类是只在创建对象时才会编写的一种写法,其特点是“现用现写”

语法:

new 父类/父类接口(){

        子类实现的内容

};

abstract class Dog{
	String Color;
	public abstract void move();
	public abstract void call();
}
public class Demo {

	public static void main(String[] args) {
		Dog maomao=new Dog() {
			public void move() {
				System.out.println("四腿狂奔");
			}
			public void call() {
				System.out.println("嗷呜~");
			}
		};
		maomao.Color="灰色";
		maomao.move();
		maomao.call();
		
		
	}
}

 

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

  • 匿名类不能写构造方法
  • 匿名类不能定义静态的成员
  • 如果匿名类创建的对象没有赋值给任何引用变量,会导致该对象用完一次就会被java虚拟机销毁 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值