Java-类-嵌套类
时间:2020-02-23 14:36:26 来源:igfitidea点击:
在本教程中,我们将学习Java编程语言中的嵌套类。
在先前的教程中,我们已经讨论了如何创建类以及如何实例化类的对象。
随时检查他们。
Java中的嵌套类是什么?
如果我们在另一个类中定义一个类,则此类称为嵌套类。
嵌套类的语法
class OuterClassName { //some code... class InnerClassName { //some code... } }
其中," OuterClassName"是包含" InnerClassName"类的外部类的名称。
注意点!
以下是有关嵌套类的注意事项。
class A { class B { //some code... } }
如果在类A内定义了类B,则B不能独立于A而存在。
B类可以直接访问所有成员变量,包括A类的私有变量和方法。
类A无法直接访问类B的成员变量和方法。
例
在下面的示例中,我们有一个外部类" Company"和一个内部类" Project"。
class Company { private int totalProject; Company() { System.out.println("Inside Company class constructor."); this.totalProject = 0; System.out.println("Total Company projects: " + this.totalProject); } public void createProject() { //creating a new project object Project prj1 = new Project(10); prj1.displayDuration(); //creating another project object Project prj2 = new Project(20); prj2.displayDuration(); //the following lines will give error //because outer class can't access the inner class //members directly //so, commented out // //System.out.println("DummyVariable of Project class : " + dummyVariable); } private void greetings() { System.out.println("Greetings from private method of Company class."); } class Project { private int durationInDays; //don't try to access this directly from //outer class Company as it is a part of //the inner class Project public int dummyVariable = 10; Project(int duration) { System.out.println("Inside Project class constructor."); //set the project duration this.durationInDays = duration; //increment the total projects //note! totalProject is a private member of Company class //but it is accessible from the inner class Project totalProject++; System.out.println("Total Company projects: " + totalProject); //calling the private method of the outer class Company //from the inner class Project System.out.println("Calling private method of Company class from Project class."); greetings(); } public void displayDuration() { System.out.println("Inside Project class displayDuration method."); System.out.println("Project duration: " + this.durationInDays); } } } public class Example { public static void main(String[] args) { //create an object Company obj = new Company(); //now create a new project of the company obj.createProject(); } }
$javac Example.java $java Example Inside Company class constructor. Total Company projects: 0 Inside Project class constructor. Total Company projects: 1 Calling private method of Company class from Project class. Greetings from private method of Company class. Inside Project class displayDuration method. Project duration: 10 Inside Project class constructor. Total Company projects: 2 Calling private method of Company class from Project class. Greetings from private method of Company class. Inside Project class displayDuration method. Project duration: 20
在上面的代码中,我们创建一个外部类Company
,在内部我们创建一个内部类Project
。
从输出中可以很容易地看出,我们可以直接从内部类Project中访问外部类Company的方法和变量。