精华内容
下载资源
问答
  • 2018-12-28 17:23:27
    • 类的基本结构

           如果一切都是对象,那么是什么决定某一类对象的行为与外观呢?答案时“类”。类是构造对象的模板或蓝图。就像建筑物与设计图纸,通过一份设计图纸,可以构造处建筑物,而Java开发人员在编写代码时,实际上是编写类代码,对象只有程序运行时才存在。

           当用户创建一个Java程序时,可以通过类声明来定义类。通常,这些类里没有main方法,只有一些属性和方法。一个完整的程序,应该由若干个类组成,其中一般只有一个类有main方法。

    在Java中,最简单的类的定义语法为:

    class 类名

    {

           //类中的代码

    }

    第一行称为类的声明。两个花括号之间的部分称为类体,类体中可以包含方法或成员变量。

    例如下面代码定义了一个简单的类Student。

    class  Student   { .......}

    在具体的编程中,一个完整的类还包含构造函数、成员变量、方法等,将在后面逐一介绍。


    • 类之间的关系

    在面向对象的思想中,类之间存在一下几种常见的关系

    1、USES-A 关系

          “USES-A 关系” 是一种最明显、最常见的关系,若类A中的方法操纵了类B(对象)的成员,则称之为类A “USES-A” (用到了)类B。例如,汽车启动前检查汽油是否足够,例:

    class Car
    {
    	private int cubage=100;
    	
    	public void startIsEnough()
    	{
    		if(cubage>80)
    			System.out.println("汽油充足,汽车可以启动");
    		else 
    			System.out.println("汽车不可以启动");
    	}
    
    }
    public class Sample3_1 
    {	
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c=new Car();
    		c.startIsEnough();
    
    	}
    
    }
    

           在上述例子中,main方法实例化Car类后,调用startIsEnough()方法,形成“IS-A”关系。因为汽油储量设备为100,满足储备量充足规则,可以启动,所以运行结果中打印了”汽油充足,可以启动”。

     

    2、HAS-A关系

    “HAS-A”关系是一种拥有关系,若类A中有B类型的成员引用变量,则类A“HAS-A”(即拥有)类型B。例如,轿车拥有轮胎:

    class Car
    {
    	private Type t=new Type();
    	
    	public Type getTypeInfo()
    	{
    		return t;
    	}
    }
    class Type 
    {
    	private String material="橡胶" ;
    	private String color="黑色" ;
    	
    	public String getMaterial()
    	{
    		return material;
    	}
    	
    	public String getColor()
    	{
    		return color;
    	}
    }
    public class Sample3_2 
    {
    
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c=new Car();
    		System.out.println("轮胎的颜色为:"+c.getTypeInfo().getColor());
    		System.out.println("轮胎的材料为:"+c.getTypeInfo().getMaterial());
    	}
    
    }
    

    通过上述代码可以看出“HAS-A”关系的具体含义,由于汽车对象拥有了轮胎对象,所以汽车对象也就拥有了轮胎对象中的一切可见信息。

     

    3、IS-A关系

              在面向对象中“IS-A”的概念是基于继承的, 旨在表达一个类是另一个类的子类。也就是说,若类A是类B子类的一种,则可以说类A  “IS-A”(是一种)类B。例如,“苹果”是“水果”的一种,则他们之间的关系为“苹果” IS-A(是一种)“水果”。

            在实际开发中需要同时用到以上介绍的几种关系,要抓住现实世界中事物之间的实际关系来进行抽象,然后再Java世界中建立模型。如果搞错了关系的类型,有可能影响系统的开发或维护。


    • 构造函数

            在创建对象时,对象的成员可以由构造函数方法进行初始化。构造函数是一种特殊的方法,它具有和他所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,这是因为一个类的构造函数的返回值就是这个类本身。构造函数的任务就是初始化以一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个可用的对象。例如,利用构造函数初始化汽车的各项参数:

    package Car;
    class Car
    {
    	private String color;
    	private String brand;
    	
    	//下面为构造函数,构造函数与类名相同。在构造函数中,初始化汽车的颜色和品牌
    	public Car()
    	{
    		this.color="黑色";
    		this.brand="大众";
    	}
    	
    	//构造方法
    	public String getColor()
    	{
    		return this.color;
    	}
    	public String getBrand()
    	{
    		return this.brand;
    	}
    }
    public class Sample3_3 
    {
    
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c=new Car();
    		System.out.println("汽车的颜色为:"+c.getColor());
    		System.out.println("汽车的品牌为:"+c.getBrand());
    	}
    
    }
    

           在上面的例子中,main方法实例化Car类时,调用Car类的构造函数初始化类变量。在Car类中,构造函数是不包含任何参数的。有时也需要为构造函数定义参数,方便赋值,下面的例子同时定义了两个构造函数,分别带参数和不带参数:

    package Car;
    class Car
    {
    	private String color;
    	private String brand;
    	
    	//无参构造函数
    	public Car()
    	{
    		this.color="黑色";
    		this.brand="大众";
    	}
    	
    	//有参构造函数
    	public Car(String co ,String br )
    	{
    		this.color=co;
    		this.brand=br;
    	}
    	
    	//构造方法
    	public String getColor()
    	{
    		return this.color;
    	}
    	public String getBrand()
    	{
    		return this.brand;
    	}
    }
    public class Sample3_3 
    {
    
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Car c1=new Car();
    		System.out.println("汽车的颜色为:"+c1.getColor());
    		System.out.println("汽车的品牌为:"+c1.getBrand());
    		
    		Car c2=new Car("红色","奥迪");
    		System.out.println("汽车的颜色为:"+c2.getColor());
    		System.out.println("汽车的品牌为:"+c2.getBrand());
    
    	}
    
    }
    

    上面说的例子当中,包含两个构造函数,有时一个类可能有多个构造函数,每个构造函数的参数类型均不相同,多个构造函数可看作方法的重载,只能根据参数类型匹配合适的构造函数。但构造方法与普通方法不同,是一种特殊的方法,具体有以下特点:

    1. 构造方法的方法名必须与类名相同
    2. 构造方法没有返回类型,也不能定义为void,在方法名面前不声明方法类型
    3. 构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域
    4. 构造方法不能由编程人员调用,而要系统调用
    5. 构造方法可以重载,以参数的个数,类型或排列顺序区分
    6. 一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参的默认构造器,这个构造器不执行任何代码

    • 类成员

    定义了类之后,就可以在类体中声明两种类的成员,成员变量与成员方法。

    1、成员变量的使用

           成员变量就是类的属性,类定义中的属性指定了一个对象区别于其他对象的值。例如,学生类的定义包括年龄、姓名和班级这些属性,每个对象的这些属性都有自己的值。所有由类定义建立的对象都共享类的方法,但是,它们都具有各自属性变量的副本。

           成员变量有时也可以称为实例变量,其定义写在类体中:

    class Student
    {
    	public int stuAge;
    	public String stuName;
    	public String stuClass; 
    	//年龄,姓名,班级
    }
    public class Sample3_5 
    {	
    	public static void main(String[] args) 
    	{
    		// TODO Auto-generated method stub
    		Student s1=new Student();
    		Student s2=new Student();
    
    		//为s1赋值
    		s1.stuAge=21;
    		s1.stuName="张三";
    		s1.stuClass="200801";
    		
    		//为s2赋值
    		s2.stuAge=23;
    		s2.stuName="李四";
    		s2.stuClass="200802";
    		
    		System.out.println(s1.stuName+' '+s1.stuAge+' '+s1.stuClass);
    		System.out.println(s2.stuName+' '+s2.stuAge+' '+s2.stuClass);
    	}
    
    }
    

           有点像C语言中的结构体,从上述例子中可以看出,两个对象成员变量有其各自的值,互不影响,new操作创建对象后将返回其引用值,一般在new操作完成后都将其返回的对象引用赋值给一个引用,也就是让引用指向创建的对象。如果只是用new操作创建对象不让某个引用指向该对象,则对象自创建后就不能对其进行访问了。因为在Java中,访问对象只能通过指向对象的引用来实现。

     

    2、成员变量的初始值

    变量类型默认值
    booleanfalse
    char'\u000'
    byte0
    short0
    int0
    long0L
    float0.0F
    double0.0D
    对象引用型null

           对象引用型成员变量,其初始值为null,表示此引用没有指向任何对象,这里需要注意的是,字符串(String)类型空引用(null)与空字符串不同,空引用表示没有指向任何对象,而空字符串表示内容为空的字符串对象。


    • 对象的创建

           有了类就可以利用其创建对象了,在Java中创建对象很简单,只要用new关键字即可,由类创建对象的过程中称为实例化,每个对象是类的一个实例,如学生类是对什么是学生做定义,而张三、李四是学生类的实例。

           创建对象与基本类型的声明类似,首先说明创建对象的所属类名,然后为对象的名称,例如 Student s=new Student();Student 为对象所属类,s为对象名称,通过new为新对象创建内存空间。与变量相比,对象的内存控件要大很多,因为对象是以类为模板创建的具体实列,具有属性和方法,例如s对象具有班级、姓名等属性,具有上课、下课等方法。如果要调用该对象则需要用点运算符' . '连接需要的属性和方法,例如s.name=“李四”;。

     

     

     

     

     

     

     

     

     

    更多相关内容
  • 题目:在创建对象时必须()

    千次阅读 2020-05-19 12:16:46
    题目:在创建对象时必须() A、先声明对象,然后采购使用对象 B、先声明对象,为对象分配内存空间,然后才能使用对象 C、先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象 D、以上说法都不对 答案...

    题目:在创建对象时必须()

    A、先声明对象,然后采购使用对象

    B、先声明对象,为对象分配内存空间,然后才能使用对象

    C、先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象

    D、以上说法都不对

    答案:C

    解释:

    Java就是这样规定的,没办法,你不这样做就会报错,例如下面的一道选择题就是最好的证明,如下所示:

    延伸:
    阅读以下代码:

    public class foo {
        public static void main(String[] args) {
            String s;
            System.out.println("s="+s);
        }
    }
    

    程序执行的结果应该是:()

    A、代码得到编译,并输出"s="

    B、代码得到编译,并输出"s=null"

    C、由于String s没有初始化,代码不能编译通过

    D、代码得到编译,但捕获到NullPointException异常

    结果:C

    解释:
    在这里插入图片描述

    展开全文
  • 摘要:特别叫量呼的海是对,使用关集中用于部过的局负荷控制,向行试呼的个目特定制用制在某一来限段内的进次数时间g控。学院现重如发患全隐大安,创例对或发故全事生学生安,息()造作被坚决因信杜绝动成工,迅速...

    favicon_example.jpg摘要:

    特别叫量呼的海是对,使用关集中用于部过的局负荷控制,向某行试呼的个目特定制用制在某一来限段内的进次数时间g控。学院现重如发患全隐大安,创例对或发故全事生学生安,息()造作被坚决因信杜绝动成工,迅速向分管院告要在第一长报时间。使用关撞击角砾岩。...

    特别叫量呼的海是对,使用关集中用于部过的局负荷控制,向某行试呼的个目特定制用制在某一来限段内的进次数时间g控。

    消费行为户资户服户服功能面管域拥有客务界务质料管理、键字建类理、量管理等服务分析客户客户、客、客。

    学院现重如发患全隐大安,创例对或发故全事生学生安,息()造作被坚决因信杜绝动成工,迅速向分管院告要在第一长报时间。,人(给予当事,值班饮酒期间的,工工作日中午教职饮酒的。学生休学(含和保年限在校最长籍)为(留学,校学学生休学限徽矿年为规定通高《普业职业技院实一般以一理规等学定安法(生管术学施办试行。学生享有在校依法期间权利。

    365363.jpg

    使用关撞击角砾岩。上薄。

    键字建类型是或避或剂过作给药途径免肝减少用的肠首。学院没收有权,创例对一经发现。关于权数的确定(,使用关关键平均加权问题定权法的是确数。管理厅、键字建类面有域对营业务界网站的服)等方式客户客户。下列哪些做法误的是错,创例对后在运意外动中发生伤害事故。

    护人应取意书签字情同得学的知生监,使用关习岗实周岁加跟未满的学生参。许可徽淮或销货规定照、键字建类证的品安进货院校园超有营业执《安全管北煤必须卫生理制电技度》到持厂家处进师学市(商店)食售商,键字建类志且有(期必须)标未过所进食品。

    每学按(期均程计算)课,创例对校学学期徽矿规定通高门课《普几个讲授业职业技院实理规等学定安程分法(凡一生管术学施办试行。

    行办下列徽淮规定之一院招《安北煤标投标管标准理暂电技达到的法》师学,使用关行招货物合同工、使用关估算价达)及以上按规必须标工定进单项到(的程施采购。

    键字建类这种重要模式经营运营变使)变来越电信的转得(得越商的。

    创例对行人民人保1日护法)年共和国未中华自(6月起施成年。状构造鱼尾。学生学期该门总学缺课无故累计的(超过时数课程,,该课绩以计程成”分,校学徽矿规定通高在全《普业职业技院实勤情理规等学定安程考法(生管术学施办试行况下,核该课不得参加程考,规定给予纪律外除按处分。每学按(期均程计算)课,创例对校学学期徽矿规定通高门课《普几个讲授业职业技院实理规等学定安程分法(凡一生管术学施办试行。

    展开全文
  • java的加载顺序和创建对象时的调用顺序的加载顺序创建对象的过程注意 的加载顺序 有父子关系的类在加载 先调用父类静态初始化块,静态属性,但不包括静态方法,然后再是,子类静态初始化块,静态属性,但...

    java的类加载顺序和创建对象时的调用顺序

    类的加载顺序

    有父子关系的类在加载时
    先调用父类静态初始化块,静态属性,但不包括静态方法,然后再是,子类静态初始化块,静态属性,但同样不包括静态方法 。

    创建对象的过程

    先是父类非静态初始化块,非静态属性 ,再是父类构造函数,然后是子类非静态初始化块,非静态属性 ,最后是子类构造函数
    在这里插入图片描述
    运行结果
    在这里插入图片描述

    注意

    (1)子类在继承父类后,若重写了父类的方法,那么父类中这个方法会被隐藏,但是可以通过在构造方法中用super显示调用。
    (2)父类的静态方法是不能被继承的
    (3)如果父类没有写出默认的无参构造方法但有写出有参的构造方法,那么在子类的构造方法中需显示调用父类的有参构造方法,不然会报错。
    在这里插入图片描述

    运行结果
    在这里插入图片描述

    展开全文
  • 对象、定义创建对象

    千次阅读 2018-07-09 19:35:00
    对象对象是面向对象编程的核心,使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类类就相当于制造飞机的图纸,用它来进行创建的飞机就相当于对象1. 人以类聚 ...
  • 学生 import java.util.Scanner; public class Student { String name = "张三"; int age = 16; String grade = "三年二班" ; String fancy = "打篮球 唱歌 读书 冒险"; public void introduce(){ ...
  • python中创建对象(object)

    万次阅读 2019-06-15 06:54:02
    该系列文章: ...《python中创建对象(object)》 在上一篇文章《python中的数据类型(list,tuple,dict,set,None)》的1.2小节里我们就简要介绍过对象(object)跟(class)的概念。也知道了python...
  • 工厂模式(创建对象的最佳方式)

    千次阅读 2021-07-14 10:01:02
    工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建对象。 工厂模式具体包括了简单工厂、工厂方法、抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计...
  • 对象创建和初始化

    千次阅读 多人点赞 2020-12-26 12:28:05
    文章目录前言一、对象的关系二、如何创建和初始化对象1.使用new关键字创建对象2.对象初始化三、构造器 前言 本文主要讲解对象的关系,以及如何创建和初始化对象,对构造器的详解 一、对象的关系 ...
  • 1、在类中设置一个static的int变量,每次创建一个对象时,count加1。 staic int count=0; Person(){++count;} 2、 同时要让对象的id递增,只需把count加1的结果赋给id即可。 id=++count; 3、 为了让count...
  • Aop自动创建代理对象的原理我们使用Spring Aop,通常Spring会自动为我们创建目标bean的代理对象,以使用对应的Advisor。前提是我们使用Spring Aop是使用的或,这是因为当我们applicationContext.xml文件中...
  • JS创建对象的几种方法

    千次阅读 2018-07-29 17:41:16
    自己认为目前能较好理解的创建对象方法,可能某些方面不是最优的方法 // 1. 创建使用函数创建(工厂模式) function Person(age,name){ this.age = age || void 0; //void 0 相当于 undefined ,,自己设置好...
  • 通过对象获取创建对象的类型信息。 对类型()的一个抽象,就是JDK中的Class; Class也是一个,用来描述其他的信息。 (二)Class对象的三种获取方式 序号 方式 1 通过对象的getClass()方法获取...
  • Rational Rose2017 创建对象

    千次阅读 2019-03-31 14:38:46
    然而,"对象图"刻画各方面特定使用非常有用。对象图显示了对象的集合及其联系,代表了系统时刻的状态。它是带有值的对象,而非描述符,当然,许多情况下对象可以是原型的。用协作图可显示一个可多次实例化的...
  • class Person{ String name; int id; public Person(int id,String name) { this.name=name; this.id=id;...//count被所有对象共享 { count++; } } public class Demo46 { pub...
  • Java创建对象的四种方式

    万次阅读 多人点赞 2016-05-09 16:47:56
    1.new 2.clone 3.newInstance ...以String为例 String sring = null;    Class class1 = String.class;// 该方法最为安全可靠,程序性能更高。  Class class2 = string.getClass
  • 01. 单例设计模式 设计模式 设计模式是前人工作的总结和提炼,通常,被人们... 目的—— 让类创建对象系统中只有唯一的一个实例 每一次执行类名()返回的对象,内存地址是相同的 单例设计模式的应用场...
  • Java面向对象 - 对象

    千次阅读 多人点赞 2021-01-16 10:07:03
    类:类是一个模板,它描述一类对象的行为和属性。 对象:对象是类的一个实例,有 属性 和 行为 。 举个例子: 人是一个 “类”,小明就是人的 “对象” ,女生/男生是一个类,你的女朋友/男朋友就是一个对象,这个...
  • 接口可以创建对象、实例化吗?

    千次阅读 2021-01-05 17:31:27
    Java中 接口和是并列的两个结构3. JDK7以前:只能定义全局变量和抽象方法:①全局常量:public static final的。 ②抽象方法: public abstract 的。 JDK8及以后: 除了定义全局变量和抽象方法以外,还可以定义...
  • Python中创建和使用方法

    万次阅读 多人点赞 2019-03-13 06:56:31
    面向对象编程(OOP)是最有效的软件编写方法之一,我们会使用到类(CLASS)来定义出一大类对象都有的行为,当我们基于类来创建对象,每个对象都具备这种通用的行为。 然后根据需要赋予每个对象独特的个性。根据类来...
  •   一个对象作为另一个的数据成员。...一个中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是一个的一个对象。用子对象创建。   &n...
  • Code is never die ! 1. 对象 对象是由属性和方法组成的:是一个...抽象了对象的公共部分,它泛指一大(class)对象特指一个,通过实例化一个具体的对象 对象,面向对象总结: 抽象了对象的公共部
  • java.lang.Class和反射机制创建对象

    万次阅读 2015-11-24 00:12:02
    java.lang.Class  Java程序运行,Java运行系统一直对所有的对象进行所谓的运行...Class封装一个对象和接口运行的状态,当装载类时,Class类型的对象自动创建。  Class 没有公共构造方法。Class 对象
  • Mybatis中关联表需要创建实体对象吗?

    万次阅读 2020-12-24 15:27:00
    1、比如用户角色权限结构中,关联表只是存储关联关系,那么这种情况下是不需要创建实体的,业务操作可以交给Java代码来做或者直接跨表操作。 2、如果关联表中还存储有一些状态数据或者是资源数据,那么就需要...
  • 【C++】C++对象、构造函数和析构函数

    千次阅读 多人点赞 2018-06-03 20:32:37
    它即可包含描述事物的数据,又可包含处理这些数据的函数,类在程序运行是被用作样板来建立对象的。所以要建立对象,首先必须定义。 定义 定义一个的一般格式为: class 类名{ private: 成员表1; public:...
  • Java对象创建时的内存分配方式

    千次阅读 2018-09-28 18:40:49
    Java中通过new指令创建对象,当jvm收到一条new指令,会首先检查常量池中是否可以定位到指定的符号引用;如果可以,则表示对应已经加载到jvm中,否则就需要先进行加载的操作。  &...
  • C++中对象的讲解(通俗易懂)

    万次阅读 多人点赞 2016-07-14 20:09:45
    概念 描述 成员函数 的成员函数是指那些把定义和原型写在类定义内部的函数,就像定义中的... 的构造函数是一种特殊的函数,在创建一个新的对象时调用。的析构函数也是一种特殊的函数,删...
  • 类对象基础概念

    千次阅读 2018-12-19 16:31:44
    2.**:*具有相同属性和行为的一些对象的统称或集合(中只有定义,执行函数中,成员变量在类中定义,可初始化,若不初始化系统默认初始化,但不能在类中写执行语句) 3.由属性和行为标识 4.eclipse中,一个...
  • 我们可以定义一个接口类型的引用变量来引用实现接口的的实例,当这个引用调用方法,它会根据实际引用的的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。//定义接口InterA ...
  • 创建动态代理对象bean,并动态注入到spring容器中

    万次阅读 多人点赞 2019-04-30 00:48:19
    使用过Mybatis的同学,应该都知道,我们只需要编写mybatis对应的接口和mapper XML文件即可,并不需要手动编写mapper接口的实现。这里mybatis就用到了JDK动态代理,并且将生成的...或者配置(@Configuration)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 671,811
精华内容 268,724
关键字:

在创建某类的对象时应该