java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_02

本章着重介绍Java编程中类和对象等非常重要的概念。    

Java程序是由类组成的,编写Java程序的过程就是从现实世界中抽象出Java可实现的类并用合适的语句定义它们的过程,这个定义过程包括对类内各种属性和方法的定义,创建类的对象,也包括类间的各种关系和接口的定义。

4.1 类及方法

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_03

二、类的声明

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_04

2.类头

class关键字表明一个类的开始,在它的后面,应跟随新数据类型的名称。(注意不要把class写成Class)。  

类名最好采用见名知意的原则,如果类名是一个单词,首字母最好用大写字母,若由几个单词复合而成,每个单词的首字母最好都用大写字母。如:BeiJingTime, HelloChina等。  

父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类,存在继承关系。继承是类与类之间的一种非常重要的关系。

例1

java中一个类赋值给另一个类 java怎么给类成员赋值_java_05

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_06

abstract class A
{  abstract void callMe();
   void callMeToo()
   { System.out.println("this is a concrete methods.");
    }  
}

class B extends A
{ void callMe()
   { System.out.println("B's implementation of callme.");
    }
}

class AbstractDemo
{ public static void main(String args[])
  { B b;
    b=new B();
    b.callMe();
    b.callMeToo();
  }
}

java中一个类赋值给另一个类 java怎么给类成员赋值_java_07

三、类体

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_08

2.方法

java中一个类赋值给另一个类 java怎么给类成员赋值_java_09

用来描述类的功能,类中定义的方法(又称成员函数)通常起到两种作用:  

  • 一是围绕着类的属性进行各种操作;  
  • 二是与其他的类或对象进行数据交流、消息传递等操作。

方法头一般由方法名、参数列表、返回类型、方法修饰符方法抛出的例外五部分组成。

  • (1)方法名可以是任何有效的标识符,命名规则与标识符命名规则相同。 方法名由一个单词组成时,首字母用小写。  方法名由多个单词组成时,从第2个单词开始其它单词的首写字母用大写。
  • (2)类型说明符用来指定方法返回值的类型,方法最多只能返回一个值。
  • (3)参数列表是方法的输入接口,它列出了一系列形式参数的类型和名称,形参类型说明必须在参数表中给出,方法参数表的右括号后加一个分号是语法错误。
  • (4)参数表以逗号为分隔符,其中包含了方法被调用时传递给方法的参数说明。对于方法定义中的每一个参数,方法调用时必须有一个参量与之对应,而且该参量的类型必须与对应参数类型相一致。

3.方法的调用

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_10

4.构造方法

构造方法是一种特殊的方法,其特殊性主要体现在以下几个方面:

  • (1)构造方法的方法名与其所在类的类名相同。
  • (2)构造方法的主要作用是完成对类对象的初始化工作。
  • (3)构造方法不能由编程人员显式地直接调用。
  • (4)构造方法总是和new运算符一起使用。
  • (5)在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化。
  • (6)如果定义类时没有显示的定义构造方法,则系统提供不带参数的默认构造方法,默认构造方法将成员变量初始化为默认值。
  • (7)构造方法可以带有参数,但没有返回类型。
  • (8)一个类可以有多个构造方法。

java中一个类赋值给另一个类 java怎么给类成员赋值_java_11

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_12

class People
{ 
    int change;
    float height,weight;
    boolean bigear;
    String head;
    void speak(String s)
    { 
        System.out.println(s);
    }
 } 
class A
{ 
    public static void main(String args[])
    { 


     }
 }

4.2 对象

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_13

java中一个类赋值给另一个类 java怎么给类成员赋值_java_14

class People
{ 
    int change;
    float height,weight;
    boolean bigear;
    String head;
    void speak(String s)
    { 
        System.out.println(s);
    }
 } 
class A
{ 
    public static void main(String args[])
    { 
        
        
    }
 }

2. 为对象分配内存

java中一个类赋值给另一个类 java怎么给类成员赋值_System_15

java中一个类赋值给另一个类 java怎么给类成员赋值_java_16

class People
{ 
    int change;
    float height,weight;
    boolean bigear;
    String head;
    void speak(String s)
    { 
        System.out.println(s);
    }
 } 
class A
{ 
    public static void main(String args[])
    { 
        People zhubajie;
        zhubajie=new People();
    }
 }

3. 对象的内存模型

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_17

class People
{ 
    int change;
    float height,weight;
    boolean bigear;
    String head;
    void speak(String s)
    { 
        System.out.println(s);
    }
 } 
class A
{ 
    public static void main(String args[])
    { 
        People zhubajie=new People();
        People sunwukong=new People();
    }
 }

二、使用对象

java中一个类赋值给另一个类 java怎么给类成员赋值_System_18

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_19

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_20

java中一个类赋值给另一个类 java怎么给类成员赋值_System_21

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_22

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_23

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_24

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_25

三、对象的引用和实体

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_26

  • 2-3-java存在“垃圾收集”机制,这种机制周期性地检测某个实体是否已不再被任何对象所拥有,如果出现这样的实体,就释放实体占有的内存。P51注。
  • 7-People shasang;
  • 如果程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以java的编译器对空对象不做检查。

四、参数传值

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_27

java中一个类赋值给另一个类 java怎么给类成员赋值_java_28

java中一个类赋值给另一个类 java怎么给类成员赋值_java_29

2.引用类型参数的传值

如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化。

java中一个类赋值给另一个类 java怎么给类成员赋值_System_30

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_31

java中一个类赋值给另一个类 java怎么给类成员赋值_java_32

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_33

4.3 static和this

一、实例变量和类变量的区别    

1.所有对象的类变量都被分配相同的一处内存。    

2.不同对象的实例变量将被分配不同的内存空间。    

3.类变量不仅可以通过某个对象访问,也可以直接通过类名访问。    

4.实例变量可以通过对象访问,不能使用类名访问。

java中一个类赋值给另一个类 java怎么给类成员赋值_java_34

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_35

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_36

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_37

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_38

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_39

Q1:OK

System.out.println(StaticFun.setA(121));可以写成:

System.out.println(setA(121));

Q2:NO

Q3:OK

Q4:ok

Q5:no

二、实例方法和类方法的区别    

1.类的实例方法,只有在该类的对象创建后才分配入口地址。从而该实例方法可以被该类创建的任何对象调用执行。      

2.类方法,在该类被加载到内存时,就分配了入口地址。从而类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。      

3.类方法只能操作类变量,不能操作实例变量,也不能调用实例方法。      

4.实例方法既能对类变量进行操作也能对实例变量进行操作。      

5.实例方法可以调用该类中的其他方法,类方法只能调用该类中的其他类方法。

三、this

  • this关键字可以出现在类的实例方法中,代表使用该类的当前对象。  
  • this关键字也可以出现在类的构造方法中,代表使用该类所创建的对象。  
  • this关键字不能出现在类方法中。

【练习1】下列A类的类体中哪些代码是错误的?

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_40

【练习2】请说出A类中System.out.println的输出结果?

java中一个类赋值给另一个类 java怎么给类成员赋值_System_41

【练习3】请说出A类中System.out.println的输出结果?

java中一个类赋值给另一个类 java怎么给类成员赋值_System_42

4.4 包

java中一个类赋值给另一个类 java怎么给类成员赋值_java_43

二、包的引入

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_44

常见的JAVA API:

  • java.lang  提供基本的数据类型及操作,此包由编辑器自动地导入所有程序。  
  • java.util 提供高级数据类型及操作,如日期和时间操作。  
  • java.io 提供输入/输出流控制,含有支持输入和输出的类。  
  • java.awt 提供图形界面控制。  
  • java.awt.event 提供窗口事件处理,包括剪贴板、字符串发送器等。  
  • java.net 提供支持Internet协议的功能。利用java.net包,开发者可以编写自己的具有网络功能的程序。  
  • java.applet 提供实现浏览器环境中Applet的有关类和方法。  
  • java.sql 提供与数据库连接的接口。  
  • java.security 提供安全性方面的有关支持。利用其中的类可以对java程序加密,也可以把特定的Java Applet标记为“可信赖”,使它能够具有与Java Application相近的安全权限。

4.5 访问权限

java中一个类赋值给另一个类 java怎么给类成员赋值_System_45

class Tom
{
  private float weight;
  private float f(float a,float b)
   { ... }
 }

class Jerry
{
   void g( )
   { Tom cat=new Tom( );
     cat.weight=23f;           //非法
     cat.f(3f,4f);             //非法
    }
 }

将Tom修改为:

class Tom
{
  private float weight;
  private float f(float a,float b)
   { ... }
  void g( )
   { Tom cat=new Tom( );
     cat.weight=23f;           
     cat.f(3f,4f); }
 }

二、public

  • 用public修饰的变量叫共有变量  
  • 用public修饰的方法叫共有方法  
  • 可以用public修饰类,这样的类叫共有类  
  • 共有类可以被同一个包中的其它类使用,也可以被不在同一个包中的其它类使用  
  • 共有变量和共有方法,可以被定义在其它类中的对象访问和修改

三、缺省(友好)

  • 如果变量和方法前没有修饰符,称这样的变量和方法为友好变量和友好方法  
  • 如果类的修饰符缺省,这样的类叫友好类  
  • 友好类可以被同一个包中的其它类使用,但不可以被不在同一个包中的其它类使用  
  • 友好变量和友好方法,可以被同一个包中的在其它类中定义的对象访问和修改

四、protected

  • protected修饰的变量和方法,称为受保护的变量和受保护的方法  
  • protected不能用来作类的修饰符  
  • protected修饰的成员,可以被三种类引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类。

java中一个类赋值给另一个类 java怎么给类成员赋值_java_46

java中一个类赋值给另一个类 java怎么给类成员赋值_java_47

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_48

java中一个类赋值给另一个类 java怎么给类成员赋值_System_49

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_50

本章着重介绍Java编程中类和对象等非常重要的概念。    

Java程序是由类组成的,编写Java程序的过程就是从现实世界中抽象出Java可实现的类并用合适的语句定义它们的过程,这个定义过程包括对类内各种属性和方法的定义,创建类的对象,也包括类间的各种关系和接口的定义。

上机实践3-实验1 类封装

编写一个Java应用程序,该程序中有3个类:Trangle、Lader和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:

(1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边得功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个数能够构成一个三角形。

(2)Lader类具有类型为double的上底、下底、高、面积属性,具有返回面积的功能。

(3)Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_51

java中一个类赋值给另一个类 java怎么给类成员赋值_java_52

java中一个类赋值给另一个类 java怎么给类成员赋值_System_53

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_54

实验后练习:

  • (1)程序中仅仅省略【代码15】,编译能通过吗?
  • (2)程序中仅仅省略【代码16】,编译能通过吗?
  • (3)程序中仅仅省略【代码15】,运行时出现怎样的异常提示?
  • (4)给Trangle类增加3个方法,分别用来返回3个边:sideA、sideB和sideC.
  • (5)让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。

上机实践3-实验2 实例成员与类成员

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_55

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_56

Example.java
class A
{   
   【代码1】 //声明一个float型实例变量a
   【代码2】            
      //声明一个float型类变量b,即static变量b
    void setA(float a)
    {  
      【代码3】 //将参数a的值赋值给成员变量a
    }
    void setB(float b)
    {  
      【代码4】//将参数b的值赋值给成员变量b
    }
    float getA()
    {  
       return a;
    }
    float getB()
    {  
       return b;
    }
    void inputA()
    {
       System.out.println(a);
    }
    static void inputB()
    {
       System.out.println(b);
    }
}
public class Example
{   
    public static void main(String args[]) 
    { 
      【代码5】            
       //通过类名操作类变量b,并赋值100
      【代码6】           
      //通过类名调用方法inputB()
       A cat=new A();
       A dog=new A();
       【代码7】    
    //cat调用方法setA(int a)将cat的成员a的值设置为200
       【代码8】   
   //cat调用方法setB(int b)将cat的成员b的值设置为400
       【代码9】    
   //dog象调用方法setA(int a)将dog的成员a的值设置为150
       【代码10】   
   //dog调用方法setB(int b)将dog的成员b的值设置为300
       【代码11】   //cat调用inputA()。  
       【代码12】   //cat调用inputB()。  
       【代码13】   //dog调用inputA()。  
       【代码14】   //dog调用inputB()。   
    } 
}

实验后的练习:

  • (1)将inputA()方法中的System. out.println(a);    改写为System.out.println(a+b);    编译是否出错?为什么?
  • (2)将inputB()方法中的System.out.println(b);    改写为System. out.println(a+b);    编译是否出错?为什么?

上机实践3-实验3   使用package语句和import语句

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_57

java中一个类赋值给另一个类 java怎么给类成员赋值_java中一个类赋值给另一个类_58

java中一个类赋值给另一个类 java怎么给类成员赋值_java_59

java中一个类赋值给另一个类 java怎么给类成员赋值_构造方法_60

java中一个类赋值给另一个类 java怎么给类成员赋值_System_61

SunRise.java
import tom.jiafei.*;
class SunRise 
{  
    public static void main(String args[ ])
    {  
        SquareEquation equation=new SquareEquation(4,5,1);
        equation.getRoots();
        equation.setCoefficient(-3,4,5);
        equation.getRoots();
    }
}

java中一个类赋值给另一个类 java怎么给类成员赋值_java_62