java学习之--对象与类

类是一个模板

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

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();  //x1
		double 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值