类和对象的简单的复习,在做项目的过程中有时候不知道怎样来调用类创建的对象,简单的几个类可以看清楚,一般在项目中创建十几个类往往就不知道怎么来看
为了以后能够看清楚,现在来回顾一下类和对象的创建,对象的调用和传递(前面写过一篇)
类和对象的基础概念:
JAVA中万事万物都是类 类有字段(属性),方法,嵌套类和嵌套接口 是在其它的类或接口中声明的内部声明的类与接口
a,类的修饰符 ;public private protected 默认的
b,字段:final 最后的不可变的,修饰方法,属性,
static:静态字段:在调用的时候不需要创建对象,而是通过类名直接调用方法
,静态字段是共享的,只要改变一个全部都改变,静态字段不可以在main方法中使用
//静态字段,直接通过类名调用
public class Demo{ public static void main(String[] args){ Demo.init(); } public static void init(){ System.out.println("我是一个静态方法"); } }
//静态字段不可以用在main方法中
非静态字段:
类的初始化:
类除了简单的初始化之外,类还可以含有构造器,构造器是一个语句块,用来在new将对象的引用
返回之前初始化对象,
class demo{ public int count; private static long nextID = 1; demo(){ count = nextID ++; } }
初始化块
class demo{ public int count; private static long nextID = 1; { count = nextID ++; } }
静态初始化:
class demo{ public int count; private static long nextID = 1; static{ count = nextID ++; } }
方法异常与返回;
当调用方法时,控制流从调用的方法传入被调用的方法,被调用的语句将按照它们的语义顺序执行
,当遇到下列三种请款时,方法将结束执行并返回给调用者:执行return语句,到达方法结尾,
抛出为捕获的异常
对象在A中创建 AA a = new AA() ,B类需要A类中的a ,可以直接将AA a;设置为B类的属性就可以? 看下面的代码,:
package 类和对象; /** * * @author Administrator *构造方法及this的使用 */ public class Animal { int legs; String name; //第一个构造方法 Animal(){ this("狗",4); //使用this调用Animal(String , int)构造方法; System.out.println("不带任何参数的构造方法"); } //第二个构造方法 Animal(String name){ this(name,4); //使用this调用Animal(String , int)构造方法; System.out.println("需要带参数的构造函数"); } //第三个构造方法 Animal(String name,int legs){ this.name = name; this.legs = legs; System.out.println("需要两个参数的构造函数"); } void play(){ System.out.println(name +"有" + legs + "条腿"); } }
//
主方法 启动线程
package 类和对象; public class AnimalTest { //主方法 public static void main(String[] args) { // TODO Auto-generated method stub Animal dog = new Animal(); Animal cat = new Animal(); Animaldemo de = new Animaldemo(); de.start(); } }
//线程类,线程没有传递参数;
package 类和对象; //线程类 public class Animaldemo extends Thread { private Animal dog; private Animal cat; private boolean islive = true; @Override public void run() { try { while (islive) { dog.play(); cat.play(); } } catch (Exception e) { islive = false; e.printStackTrace(); } } }
//运行结果;
需要两个参数的构造函数
不带任何参数的构造方法
需要两个参数的构造函数
不带任何参数的构造方法
java.lang.NullPointerException
at 类和对象.Animaldemo.run(Animaldemo.java:22)
分析:在线程中创建了main方法中创建的对象,但是线程在主函数创建的时候没有将需要的对象传给线程
导致线程中的对象是null; 初学者经常会遇到这样的问题
解决方法有两个:
第一个:是通过在创建线程的时候将对象传给线程,线程启动构造函数来接收
1,创建线程的时候传递参数
package 类和对象; public class AnimalTest { public static void main(String[] args) { // TODO Auto-generated method stub Animal dog = new Animal(); Animal cat = new Animal(); Animaldemo de = new Animaldemo(dog, cat); de.start(); } }
package 类和对象; //线程类 public class Animaldemo extends Thread{ //通过线程传递 private Animal dog; private Animal cat; public Animaldemo(Animal dog,Animal cat){ this.dog = dog; this.cat = cat; } private boolean islive = true; @Override public void run() { try { while (islive) { dog.play(); cat.play(); } } catch (Exception e) { islive = false; e.printStackTrace(); } } } 运行结果; 需要两个参数的构造函数 不带任何参数的构造方法 需要两个参数的构造函数 不带任何参数的构造方法 狗有4条腿 狗有4条腿 狗有4条腿 狗有4条腿 .......
第二个:对象直接在线程中创建
//主函数
package 类和对象; public class AnimalTest { public static void main(String[] args) { // TODO Auto-generated method stub Animaldemo de = new Animaldemo(); de.start(); } }
//
package 类和对象; //线程类 public class Animaldemo extends Thread { //在线程中创建对象 Animal dog = new Animal(); Animal cat = new Animal(); private boolean islive = true; @Override public void run() { try { while (islive) { dog.play(); cat.play(); } } catch (Exception e) { islive = false; e.printStackTrace(); } } }
运行结果:
需要两个参数的构造函数
不带任何参数的构造方法
需要两个参数的构造函数
不带任何参数的构造方法
狗有4条腿
狗有4条腿
狗有4条腿
狗有4条腿
.......
相关推荐
在这个“易语言源码易语言对象的DLL传递源码.rar”压缩包中,包含的是关于易语言如何通过DLL(动态链接库)进行对象传递的源代码示例。 DLL是Windows操作系统中的一种共享库机制,允许不同程序之间共享代码和数据,...
易语言是一种国产的编程语言,它的设计目标是让编程变得简单、直观,尤其适合初学者。在易语言中,指针传递对象是一个重要的概念,它涉及到程序中的数据传递和内存管理。下面我们将深入探讨这个主题。 一、指针传递...
本文将根据提供的文件内容,深入讲解JS初学者需要掌握的基础知识。 首先,了解JS在HTML中的插入方式。`<script>`标签可以放置在HTML文件的任意位置,但当浏览器解析到`<script>`时会暂停HTML解析,执行脚本。为避免...
初学者理解这个流程对于深入学习Struts框架和构建基于Struts的应用程序至关重要。在实际开发中,开发者需要确保Action类是线程安全的,因为可能有多个用户同时使用同一个Action实例。此外,合理使用ActionForm的验证...
【C#初学者试题】是针对刚刚接触C#编程语言的学习者设计的一系列问题,旨在帮助他们巩固基础知识,包括类和对象、实例化、命名空间、方法定义、参数传递、引用类型、代码注释、readonly修饰符、静态成员、面向对象...
易语言是一种专为中国人设计的编程语言,它以简明的中文语法,降低了编程的门槛,使得更多非专业程序员...如果你是易语言的初学者,这是一个很好的实践案例;如果你是资深开发者,这个源码也能提供一些新的思路和技巧。
初学者需要理解类的定义、对象的创建以及封装、继承和多态这三大面向对象特性。 3. **方法与函数**:在Java中,方法是完成特定任务的代码块。学习如何定义、调用方法,以及参数传递(按值或按引用)是初学者必须...
总的来说,这个压缩包中的源码是一个宝贵的教育资源,适合初学者和有一定基础的易语言开发者,通过阅读和分析源码,可以深入理解易语言免注册调用COM对象的实现方式,提升编程能力。在学习过程中,建议结合易语言的...
这个“java初学者代码”压缩包可能是为了帮助新接触Java的人提供一系列简单实用的示例代码,以促进理解和实践。下面我们将深入探讨Java语言的一些核心知识点,以及这些代码可能涵盖的主题。 1. **基础语法**:Java...
通过实例,初学者可以学习如何定义、调用方法,理解参数传递和返回值的概念。 5. **类与对象**:面向对象是Java的核心特性,实例会展示如何创建类、实例化对象,并通过对象调用方法和属性。此外,封装、继承和多态...
这个“Java初学者的天堂_面向对象基础_ppt”压缩包文件提供了一个详细的教学资源,帮助新手快速理解和掌握Java编程的基本语法和面向对象编程的核心思想。 首先,Java的基础语法是学习的基石。这包括变量声明、数据...
初学者需要理解如何声明、定义和调用函数,以及指针的概念,包括指针的运算和传递。 3. **面向对象编程**:C++引入了类和对象的概念,实现了封装、继承和多态。通过创建类来定义对象的属性和行为,通过对象实例化来...
通过阅读《C++编程初学者入门解惑》,初学者可以系统地学习C++语言,逐步解决在编程过程中遇到的问题,从而扎实地建立起C++编程基础。这本书不仅适合自学,也适合作为高校计算机科学课程的辅助教材。无论你是零基础...
标题“初学者学习的C++”暗示了这个压缩包资源可能是针对C++入门者设计的一系列教程或项目,旨在帮助初学者逐步理解C++语言的基础知识。描述中提到的“基本都是基础的C++的内容”,意味着这些资料可能涵盖了C++的...
易语言是一种以中文编程为特色的程序设计语言,其设计目标是让编程更加简单、直观,适合初学者。在本例子中,“大漠找图找色对象调用”...对于想要在自动化测试或者游戏辅助领域探索的初学者,这是一个值得尝试的组合。
对于初学者而言,掌握C++的基本语法、面向对象特性、标准库的使用以及良好的编程习惯是至关重要的。 1. **C++基础语法** - 变量和数据类型:C++支持多种基本数据类型,如int、float、double等,以及自定义的数据...
### J2EE初学者需要注意的问题 #### 一、J2EE提出的背景及重要性 ##### 企业级应用框架的需求 J2EE(Java 2 Platform, Enterprise Edition)最初是为了满足企业级应用的需求而诞生的。在传统的软件开发过程中,很...
这个名为"java新手代码适合初学者简单经典.zip"的压缩包包含了两个示例文件:test1.java和test2.java,它们很可能是为帮助初学者理解Java编程基础而设计的一些简单程序。 1. **Java基础** - **变量与数据类型**:...
这个"java初学者学习源代码"集合提供了一些简单的运行代码示例,帮助初学者通过实践来学习。 1. **基本语法与数据类型**:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、...
Java编程语言是面向对象的、跨平台的编程语言,对于初学者来说,它提供了一个良好的学习曲线,因为它的语法简洁且易于理解。本资源包"java练习题"旨在帮助那些刚开始接触Java的人巩固基础,提升编程技能。这些练习题...