java类与对象的创建与使用(注意与c++的有些关键字不一样)

来源:互联网 发布:python自动化工作 编辑:程序博客网 时间:2024/05/22 00:34

一、类的创建

格式: [修饰符] <class><类名> [extends父类] [implements接口]

  {  类体(成员变量和成员方法)    }

修饰符:指明类在使用时所受到的限制,包括类访问权限[public]和其他特性[abstract],[final]

例:public class C1  { …… }

public class C2extends Applet implements ActionListener

{……}

1.class  <类名>

告诉编译器这是一个类

2.Public(公共的)

在没有任何修饰符的默认情况下,类只能被同一个源程序文件或同一个包中的其他类使用,加上public后,该类可以被任何包中的类使用,称为公共类

注意:在同一个源程序文件中不能出现两个及以上的public类,否则编译器会告诉你将第二个public类放在另一个文件中。

3abstract(抽象的)

abstract说明的类称为抽象类,不能用它实例化一个对象,它只能被继承,abstract方法是不含代码的方法,需要以后的子类中重载实现,abstract类的子类必须实例化(实现)abstract方法,或将自己也声明为abstract。这对于定义概念是有用的。

4final(最终的)

final说明的类称为最终类,最终类不能被继承

Java中的StringArray类就是一个final

注意:final和abstract不能同时修饰一个类(出错),这样的类没有意义

 

无修饰符是默认方式,即不使用上述三种修饰符。因此它们的优势和限制都没有作用,无修饰符的类可以被其他类访问和继承,但只有在相同程序包中的那些对象才可能使用这样的类。

5extends(继承)父类名

extends告诉编译器创建的类是从父类继承下来的子类,父类必须是Java系统类或已经定义的类。

从父类继承,可以提高代码重用性,不必从头开始设计程序。

6implements(实现)接口名

implements告诉编译器类实现的接口,接口必须有定义,一般为系统类。

接口是消息传递的通道,通过接口,消息才能传递到处理方法中进行处理。implements说明你的类可以实现的一个或多个接口,如果有多个接口,要用逗号分隔。

例:import java.awt.*;

importjava.applet.*;

public class ch3extends Applet{

   public void paint(Graphics g)   {

      g.drawString("Hello Java!I love you^_^",25,25);  } }

 

<html>

<head>

<title>HelloJava Applet测试</title>

</head>

<APPLETcode=ch3.class width=200 height=40>

抱歉,你的浏览器不支持JAVA APPLET┅

</APPLET>

</html>

二、对象的创建

1.创建对象与构造方法

创建对象格式 类名对象名=new类名([参数])

说明:(1)运算符new为对象分配内存空间;

2)生成对象的最后一步是执行构造方法;

3)创建对象相当于定义一个变量,即分两步进行。

创建对象分成两步:  类名对象名 ;

对象名=new 类名([参数])

 

2.对象初始化的说明

(1)系统如何对变量初始化

当用new创建了一个对象时,系统会为对象中的变量进行初始化。即不但为变量分配相应的存储单元,还设置相应初值。系统为byte , short , int , long类型设置初值为0float类型变量初值为0.0fdouble类型变量初值为0.0char字符型变量为’u\0000’boolean逻辑变量初值为false;引用类型初值勤为null

(2)构造方法的作用与构成

new操作符为对象分配内存后将调用类的构造方法确定对象的初始状态,初始化所有变量。

构造方法功能:创建对象时,用给定的值,将对象初始化

构造方法特点:

(1)构造方法名与类名相同,且不指定类型说明;

(2)可以重载,即可以定义多个参数个数不同的函数,系统可以根据参数的不同,自动调用正确的构造方法;

(3)程序中不能直接调用构造函数,在创建对象时系统自动;

(4)可以不设计构造方法,若在初始化时还要执行一些其他命令,就必须设计构造方法,因为Java规定命令语句不能出现在类体中,只能放在方法中。

重载:参数不同可以是数量不同,类型不同,或两者都不同,但重载方法必须有相同的方法名和相同的返回类型。

例:class  ABC{

public ABC( )  {……}  //无参数构造方法

public ABC(int a, int b ) {……}  //带两个参数构造方法

public ABC(String a ) {……}  //带一个个参数构造方法

public int ABC(int a) {……}  //错,构造方法不能有类型返回值

public void ABC( )  {……}  //错,构造方法不能有类型返回值

}

例:public class SC{

public static void main(String args[]){

  sc1 a=new sc1( ) ;

  sc1 b=new sc1("练习");

 System.out.println("程序结束!");} }

 

class sc1{

   public sc1( )   {System.out.print("开始");}

   public sc1(String z) {System.out.println(z);}  }

运行结果:开始练习

程序结束

三、对象的使用

格式:<对象名>.<变量名>

<对象名>.<方法名([参数])>

例:SC a =new SC( ) //SC是已定义的类,a则是新建的SC对象

a.bian=23  // 将对象a的变量bian赋值23

a.Fan( )      // 调用对象a的方法Fan

 

 

例:class parents{

private Stringname[]=new String[5];

parents(Strings[])

{for(inti=0;i<s.length;i++)

 name[i]=s[i]; }

public voidshowname()

{for(inti=0;i<s.length;i++)

  System.out.print(name[i]+”   ”);

}}

 

class SC

{ public static void main(String args[])

{ Stringname[]={"Zhang","Wang","Li"};

  parentsp=parents(name);

  p.showname()

}}//相当于是主函数

结果:输出 Zhang  Wang Li

例:public class  NewClass{

    public static void  main(String args[]){

      G k=new  G();

      k.setK(8);

      int y=k.getK();

      System.out.println(“y=”+y); }

}}

class  G{

  private int  k;

  public void  setK(int  x){

     k=x; }

  public int  getK(){  return k;}

}}

运行结果:  y=8 

四、清除对象

Java引入了新的内存管理机制,由Java虚拟机担当垃圾收集器的工作。你可以任意创建对象,而不用担心如何清除它们,垃圾收集器会自动清除它们。

如果要明确地清除一个对象,可以自行清除它。只需把一个空值赋给这个对象引用即可。如

SC a =new SC( )

……

a=null  // 将对象a从内存中清除

五、析构方法(finalize)(补充)

析构方法(finalize)与构造方法相对应,当对象已经无用,需要清除时,编译器将自动调用对象的finalize方法。析构方法一般是做一些清除工作,如关闭打开的文件等,但不能执行用户输入操作或与其他对象进行交互。

如  class  ABC{

……

protected|public  void finalize( )

{ // do somecleanup code    }  }


0 0
原创粉丝点击