java学习之--对象与类

来源:互联网 发布:深圳市网络夏令营 编辑:程序博客网 时间:2024/05/10 22:58

类是一个模板

对象是类的实例,对像与对象名,对象名称为引用,通过对象名可以访问对象

1、类的定义

一个文件中,只允许存在一个public类,并且public类名和文件名一致,并且只有包含main()方法所在的类才能成为一个public类。


2、引用赋值

Man man1=new Man();Man man2;man2=man1;

man2与man1指向同一个对象。


3、成员方法

public class Hello {double f(int x){return x*x;}public static void main(String[] args){Hello hello = new Hello();  //x1double y= hello.f(3);System.out.println(y);}}
x1行中在Hello类中的mian()函数中定义了Hello对象,这是因为main()函数是static方法的缘故。只有在static方法中可以创建本类自身的对象。


4、局部变量和成员变量

局部变量:方法内部声明,调用时分配内存,执行完后,自动释放内存而销毁。如果未被初始化使用会报错。

成员变量:类中定义的变量,如果成员变量未被初始化则系统会自动根据其所属类型进行初始化,基本类型赋值为0,引用类型变量赋值为null。


5、this引用

this是一个引用对象自身的引用。

public class Hello {int a;void setA(int a){this.a=a;}int getA(){return a;//这里的a是指this.a}public static void main(String[] args){Hello hello = new Hello();}}

6、静态变量和静态方法

静态成员变量在不创建类的对象的情况下也可以使用,它是所有对象共有的变量。通过

普通成员变量必须在创建了类的对象后才能被使用。

public class Hello {static int a;int b;public static void main(String[] args){Hello.a=10;//类变量Hello hello = new Hello();System.out.println(hello.a);hello.a=20;System.out.println(hello.a);}}

结果为:

10

20

所有的a都指向同一个a。静态方法也是类似的,可以是类方法的方式调用。


6、成员与静态方法的关系

public class Hello {int a;public void setA(int b){this.a=b;//x1}public static void main(String[] args){Hello.setA(10);}}
报错,原因在于x1行,静态方法中调用了非静态的变量,a是非静态变量,是成员变量,只能创建对象,才能引用它。

静态方法只能用静态变量。


7、包导入package

javac -d . Hello.java

在命令行中输入上面内容,-d用于指定包的位置,参数-d后插入(.),则表示在当前目录下创建包。当前目录即源文件Hello.java所在的目录。


在其他包中使用定义的类,必须使用import关键字,import  com.egt,Hello;


8、访问控制符

成员变量或方法:private、public、default(friendly)、protected

类:public、default(friendly)

private,表示只能类内部使用,外部不能访问

public,内外都可以访问

default(friendly),省略的访问控制符,同包可以访问,其他包中类不能访问default成员。

protected,不仅同一个包可以访问,而且位于其他包中的子类也可以访问。


9、重载

重载是指同一个类中定义了多个同名但是内容不同的成员方法。


10、构造函数

创建对象时,如果没有定义构造函数,就会调用缺省的构造函数。

构造函数的名字和类的名字是一致的,没有返回值,并且前面没有void。缺省构造函数是没有参数,也没有函数体,即不做任何事情,其唯一的功能就是创建对象。

public class Hello {public Hello(){}public static void main(String[] args){Hello hello = new Hello();}}

如果类中定义了构造函数,创建对象时,就会调用定义的构造函数,不使用缺省的构造函数。

this()实现在一个构造函数内调用其他重载的构造函数,this()必须是花括号里的第一句话。


11、静态块、实例块

静态方法比静态块执行要晚,非静态成员变量不能在静态方法和静态块中使用。static{,,,}主要用来初始化静态变量及静态方法。

public class Hello {static int a;static{System.out.print("静态块");a=10;//只能是静态变量}public static void main(String[] args){Hello hello = new Hello();System.out.print(hello.a);}}

实例块先与构造函数执行,类的实例,即创建类的对象。

public class Hello {int a;{System.out.print("实例块");a=10;}public Hello(int a){System.out.print("构造函数");this.a=a;}public static void main(String[] args){Hello hello = new Hello(30);System.out.print(hello.a);}}
结果:

实例块

构造函数

30

0 0