`
caiwb1990
  • 浏览: 312591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java总结-构造和内部类

    博客分类:
  • java
 
阅读更多
构造函数:
	格式:
	1,函数名和类名相同。
	2,不需要定义返回值类型。
	3,函数中不需要return语句。

	作用:给对象进行初始化。
	构造函数在类中可以有多个,是以重载的形式体现的。
	特点:当定义类时,类并未定义构造函数,那么系统会加上一个默认的看参数构造函数。
		class Demo
		{
			//Demo(){}
		}
		这个默认的构造函数有什么修饰符呢?
		如果类有public修饰,默认构造函数也有public修饰。
		如果类没有public修饰,默认构造函数也没有public修饰。
		当类中定义了自定义构造后,默认的就没有了。

	什么时候写构造函数呢?
	在分析事物时,该事物的实体,是否在出现时就具有一些默认的属性值或者行为。
	如果有,就用构造函数来完成。

	------------------------------
	this关键字:
	当成员变量和局部变量同名的时候,为了进行区分。可以使用this来完成。
	class Person
	{
		private String name;
		private int age;
		Person()
		{
		
		}
		Person(String name,int age)
		{
			this.name = name;
			this.age = age;
		}
		public void setName(String name)
		{
			this.name = name;
		}
		public int getAge()
		{
			return age;
		}
		public boolean compare(Person p)
		{
			/*
			if(p.age==this.age)
				return true;
			else
				return false;
			*/

			return p.age==this.age;
		}
	}

	main()
	{
		Person p = new Person("lisi",20);
		p.setName("haha");
		Person p1 = new Person("wnagwu",21);
		p1.setName("hehe");

		boolean b = p.compare(p1);
		/*
		if(p.getAge()==p1.getAge())
			System.out.println("同龄");
		else
			System.out.println("no同龄");
		*/

	}
	this:代表的是就是一个本类对象,哪个对象调用了this所在的函数,那么this就代表哪个对象。

	什么时候使用this关键字呢?
	定义功能时,该功能又使用到了调用该功能对象。那么这是就用this来表示这个对象。

	class ThisDemo
	{
		private int num;
		ThisDemo(int num)
		{
			this.num = num;
		}

		ThisDemo()
		{
			//this.num = 100;
			this(100);
		}
		void show()
		{
			System.out.println("num="+this.num);
		}
		void method()
		{
			this.show();
		}
	}
	
	this的第二种用法:
	通过this语句,可以在构造函数间进行互相调用。
	注意:this语句,必须要写在构造函数的第一行。因为初始化动作要先完成。
		
	this在本类中可以用来调用成员变量,也可以调用成员函数,还可以调用构造函数。
	---------------------------------------


	static关键字:
	1,随着类的加载而加载,随着类的消失而消失,static的生命周期最长。
	2,优先于对象存在。
	3,static成员被所有对象所共享。
	4,static成员可以直接被类名所调用。

	静态的使用注意事项:
	1,静态方法只能访问静态成员。非静态方法可以访问静态也可以访问非静态。
	2,静态方法中不可以定义this和super语句。
	3,主函数是静态的。

	class StaticDemo
	{
		int age;
		static String country = "中国";

		public /*static*/ void show()
		{
			System.out.println(county+","+this.age);
		}
		public static void main(String[] args)
		{
			new StaticDemo().show();
		}
	}

	public static void main(String[] args)
	public :最大权限。
	static :该类不需要建立对象。就可以使用这个main方法。
	void : 该函数没有具体返回值。
	main : 固定名称。jvm认识。
	String[] args:主函数的参数。字符串数据类型的参数。
	
	那么jvm在调用主函数的时候到底传递的是什么实际参数呢?
	String[] args = new String[0];


	练习:
	class Demo
	{
		static int count = 0;//没有static前,在每一个对象中都有一个自己的count。所以输出结果是1。
					//有了static修饰,每一个对象共享同一个count。所以结果是创建的对象数。
		void Demo(){}//这是可以存在的。是一个一般函数,但是函数名不符合规范。

		Demo()
		{
			count++;
		}
	}
	main()
	{
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		new Demo();
		System.out.println(Demo.count);
	}



	----------------------------------------

	static代码块:随着类的加载而执行,而且只执行一次。
			优先于主函数执行。
			作用:对类进行初始化。

	class Demo
	{
		private static int num =10;
		static
		{
			for(int x=0; x<10; x++)
			{
				num++;
			}
		}

		public static void show()
		{
			System.out.println("num="+num);
		}
	}
	

	class Test
	{
		static
		{
			System.out.println("a");
		}

		Test()
		{
			System.out.println("b");
		}

		Test(int x)
		{
			System.out.println("c");
		}

		{
			System.out.println("d");
		}
	}

	class TestMain
	{
		public static void main(String[] args)
		{
			new Test();
			new Test(3);
			//adbdc
		}
	}
	

	----------------------------------


	内部类:
	在类中定义的类,称之为内部类。
	内部类可以定义在外部类的成员位置上,也可以定义在局部位置上。

	内部类的访问特点:
	内部类可以直接访问外部类中的成员,包括私有的。那是因为内部类都持有一个外部类的引用。外部类名.this

	外部类要访问内部类需要建立内部类的对象。

	class Outer
	{
		private int x = 3;
		class Inner
		{
			void show()
			{
				System.out.println(Outer.this.x);
			}
		}

		void function()
		{
			Inner in = new Inner();
			in.show();
		}
	}
	

	main()
	{
		//直接建立内部类对象,并调用内部类成员。
		//但是这种情况较为少见,因为内部类通常都会封装。外部不可以见。
		Outer.Inner in = new Outer().new Inner();
		in.show();

		//当内部类是static时。
		new Outer.Inner().show();

		//当内部类是static,而且show方式也是静态时,
		Outer.Inner.show();


	}
	当内部类定义在成员位置上,可以被成员修饰符所修饰。
	private,static。
	什么时候内部类被私有呢?内部类不需要对外暴露,在外部类中隐藏时,需要private
	什么时候内部类被静态呢?当要在内部类中定义静态成员时,内部类必须被static修饰。

	注意:内部类变成静态后,就会出现访问局限性,只能访问外部类中的静态成员。

	
	class Demo
	{
		class Inner{}

		void method()
		{
			new Inner();
		}
		public static void main(String[] args)
		{
			new Inner();//不可以。主函数只能访问静态成员。
					//如果非要访问,需要将Inner用static修饰。
		}
	}


	当内部类在局部位置时,内部类不可以被成员修饰符修饰。
	内部类不可以直接访问局部的变量。只能访问被final修饰的局部变量。


	什么时候定义内部类?
	描述事物时,该事物内部还有具体事物。可以将该事物通过内部类来描述。

	----------------------------------------





分享到:
评论

相关推荐

    Java语法总结 - 内部类

    匿名内部类可以使用在外部类的方法和构造方法中。 内部类是Java语言中的一种特殊类别,它可以访问外部类的所有成员变量和方法,包括私有的变量和方法。内部类可以分为四种:成员内部类、静态嵌套类、方法内部类和...

    java语言--内部类总结

    《Java语言——内部类详解》 内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以提供更复杂的封装,使得代码结构更加清晰,同时还能访问外部类的私有成员,提供了更高级别...

    JAVA语法总结 - 内部类

    ### JAVA语法总结 - 内部类 #### 一、内部类概述 内部类(Inner Class)自Java 1.1版本引入以来,一直是Java编程语言中的一个重要特性。它允许开发者在一个类的内部定义另一个类,这有助于更好地组织代码并实现更...

    内部类知识总结3--匿名内部类

    总之,匿名内部类是Java中一个强大的工具,它简化了代码结构,提高了代码的可读性和可维护性。然而,正确理解和使用它,需要充分理解其特性和限制,避免可能的陷阱。通过不断实践和学习,我们可以更好地掌握这一技术...

    Java内部类总结

    Java内部类主要包括以下几种类型:成员内部类(非静态内部类)、静态内部类(也称为静态嵌套类)、局部内部类和匿名内部类。 - **成员内部类**:这种类型的内部类是定义在外部类的一个成员位置上,它可以访问外部类...

    JAVA内部类总结

    通过以上总结,我们可以看到Java内部类为程序设计提供了强大的灵活性和封装能力。每种内部类都有其特定的应用场景,了解它们的特点和区别对于编写高质量的Java代码至关重要。希望本文能帮助开发者更好地理解和应用...

    java内部类使用总结

    Java内部类是Java语言中一个独特且强大的...总之,Java的内部类提供了一种灵活的编程方式,能够更好地组织代码结构,实现复杂的逻辑和设计模式。合理使用内部类可以使代码更清晰、更具可读性,同时保持良好的封装性。

    java总结大全--包括所有java基础知识点

    本节将对Java基础知识点进行总结,涵盖变量、数据类型、运算符、控制流程、方法、数组、内部类、继承、多态、接口、异常处理等知识点。 变量和数据类型 在Java中,变量是用来存储值的符号名称。Java提供了八种基本...

    java oop总结-编程程序

    - **继承**:允许一个类继承另一个类的属性和方法,从而支持代码重用和类的层次结构构建。 - **多态**:是指一个接口可以有多种不同的实现方式,即同一接口可以被多个类实现或继承。 #### 二、类的定义与成员 - **...

    Java内部类总结,内部类的共同特征,内部类的分类等

    Java 内部类总结 Java 内部类是 Java 语言的一个重要概念,指的是在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而...

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    - 内部类:在类内部定义的类,包括成员内部类、局部内部类、匿名内部类等。 - 集合框架:如ArrayList、Vector、LinkedList、HashSet、TreeSet、LinkedHashSet、HashMap等,用于存储和操作对象。 - 泛型:提供类型...

    java中的内部类总结

    Java 中的内部类是面向对象编程的一个重要特性,它允许在一个类的定义内部定义另一个类。内部类的主要优点是能够方便地访问外部类的私有成员,提供了更封装的代码组织方式,以及创建特定上下文的类实例。下面将详细...

    Java接口和内部类教程

    ### Java接口和内部类教程 ...总结来说,接口和内部类都是Java编程中的重要概念,它们各自有着独特的作用和应用场景。理解接口和内部类的使用可以帮助开发者更好地组织代码结构,提高代码的可重用性和可维护性。

    java 内部类应用

    总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免过度依赖内部类导致代码难以理解和维护。在实际项目中,应根据具体需求选择合适的设计模式。

    java 利用反射获取内部类静态成员变量的值操作.docx

    ### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...

    Java知识总结-完整版

    ### Java知识总结——关键知识点详解 #### 一、Java概述 - **面向对象特性**:Java是一种完全面向对象的编程语言,它继承了C++的一些面向对象特性,并且简化了一些复杂的概念,如去掉了指针操作,使得程序更加安全...

    java 静态内部类的使用规范

    Java语言中的静态内部类,也称为嵌套类,是内部类的一种特殊形式,它与非静态内部类(也称为成员内部类)相比有着独特的特点和使用场景。在深入探讨其使用规范之前,我们先理解静态内部类的基本概念。 静态内部类不...

Global site tag (gtag.js) - Google Analytics