Java类与对象

1.什么叫面向对象?

         写程序的时候围绕一个对象的功能来编写。

1.1面向对象的主要特点:继承、多态、封装(以及抽象)

1.1.1继承extends:子类共享父类成员变量和方法的一种模式,单继承或者多层继承,不能多重继承(只能一个父类)

1.1.2多态:对象在运行期和编译期具有的两种状态

1.1.3封装:对一件物品的描述信息是这个物品所特有的,不能让外界看到的一些成员变量和方法,需要特有的方法访问

1.1.4抽象:定义类时确定的一些行为和动作。

 

2.面向过程VS面向对象:

通过方法一步步解决问题,看重解决问题的过程     VS     通过把问题分解成各自独立功能的类,看重功能

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。
面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。
 

 

3.什么是类?

     类是抽象的东西,描述的是一个物品的完整信息

3.1定义一个类:class 类的名称 { //类的成员变量  //类的方法}

类的成员变量描述的是对象的属性,成员方法描述的是对象的行为

3.2.什么是对象?

    类的实例即对象;用new来创建对象:new 类的名称();

3.3使用现有类:

同目录下的类,直接使用

不同目录下的类需要导包

3.4成员变量:描述的这个类的一些属性或状态,在类里面创建。可以被public、protected、default、private、static、final修饰;在堆里面创建;系统默认值。

3.5局部变量:方法体内创建,只在局部有效,方法体外是访问不到的。只能被final修饰;在栈里面创建;没有系统默认值,手动赋值。

//基本类型和对象引用的例子
public class test1 {
	// 基本类型的成员变量
	int size;
	boolean b;
	String s;// String类为一个封装类,s为一个对象引用

	public static void main(String[] args) {
		test1 t = new test1();
//成员变量系统赋初值
                System.out.println(t.size);
		System.out.println(t.b);
		System.out.println(t.s);
		t.size = 12;
		t.b = true;
		t.s = "为一个对象引用类型";
		System.out.println(t.size);
		System.out.println(t.b);
		System.out.println(t.s);
	}
}

*对象引用:用new关键字创建对象test1,这个对象在内存中存在,用 t 表示在内存中对这个test1类的对象的引用.

 

4.方法

4.1什么是方法:好似动作,用来完成一系列操作的。

4.2创建方法: 

方法修饰符   方法的返回类型    方法名称(方法参数) {

   方法体

}

例子:

//基本类型和对象引用的例子
public class test1 {
	// 基本类型的成员变量
	int add1 = 123;
	int add2 = 222;

	// 创建一个方法,参数有两个,都为int类型
	public void add(int i, int n) {
		System.out.print(i + n);
	}

	public static void main(String[] args) {
		test1 t = new test1();//创建实例对象
		t.add(t.add1, t.add2);//传入参数
	}
}

4.3方法的返回类型多种,主要为

(1)void ,无返回值

(2)返回值可以是任意类型,如String、Boolean、int,但需要加return返回值

(3)可以是null,但必须是对象类型(非基本类型),基本类型不能返回null

(4)返回值为基本类型的时候,只要能够自动转换就可返回。

4.4方法的参数:

(1)可以是基本数据类型,也可以是对象引用类型。

(2)每个参数都有完整的声明改变量的形式

(3)参数可以多个

(4)main为一个方法,参数为String[] args,特殊的方法

*方法的调用问题:方法定义在对象里,只能通过其对象引用来调用,通过对象引用名称,加上“.",再加上方法名称来访问

4.5方法参数的传递

传递类型为基本类型,传递的是该类型的值 

public class test1{
	public void add(int i) {
		i=i+1;
		System.out.println(i);
	}
	public static void main(String[] args) {
		int size=44;
		test1 t=new test1();
		System.out.println(size);
		t.add(size);
		System.out.println(size);
		
	}
}

 在参数为基本数据类型进行传递到时候,是传递的这个值的备份,无论方法怎么改变这个备份,都不是操作原来的数据,所以原来的值是不会改变的。

传递的参数为对象引用类型的时候,也是利用传值的方式进行。

public class test1 {
	public static void changeString(String str) {
		str = new String("hi");
		str = str + "china!";
	}

	public static void main(String[] args) {
		// 创建一个对象类型
		String s = new String("hello");
		System.out.println("before:" + s);
		changeString(s);
		System.out.println("changeString:" + s);
		System.out.println("after:" + s);
	}
}

当把对象引用传递到一个方法后,这个方法可以改变这个对象的属性,并能够返回相应的改变。但这个对象引用指向这个字符串s是永远不会改变的。这里传递对象引用后,又通过这个引用创建了一个新的String类型的字符串,这两个字符串在内存中当然不是同一个。

思考一下这个: 

public class test1{
	public int i = 1;
	public void add(int j) {
		this.i=this.i+j;
		System.out.println(this.i);
	}
	public void add(test1 test1) {
		test1=new test1();
		test1.i = test1.i + 1;
		System.out.println(test1.i);
		test1.i = test1.i - 1;
	}
	public static void main(String[] args) {
		int size=44;
		test1 t=new test1();
		System.out.println(t.i);
		t.add(1);
		System.out.println(t.i);
	//	t.i = 5;
		t.add(t);
		System.out.println(t.i);
	}
}

5.对象引用的使用:

什么是对象引用?——该引用名称指向内存中的一个对象,通过调用该引用即可完成对该对象的操作。

如果使用不当,会在通过引用进行调用时出现问题:不存在对象、空引用、对象间的比较......

5.1调用不存在的对象或者成员变量:

如果调用的对象或成员变量没有创建,那么该编译的时候编译器将出现错误——声明

5.2调用对象为null的引用:

空指针错误:NullPointException:任何操作的对象的值为null的时候都将出现空指针错误。该错误是运行期的错误,编译时不会进行提示。

成员变量和方法是属于对象的,即new出来的,如果使用空引用进行调用,只要所调用的成员变量或方法已经在代码中进行声明,编译就不会报错。

*在声明一个对象引用后尽量为其赋值一个初值。

5.3对象引用间的比较:比较的是这两个对象的引用(内存中的一个地址)

6.this:表示自己、本身的意思,当前对象的本身;

在方法中用于指代/调用这个方法的对象。this只能在方法中使用,不能在修饰为static的方法里使用。

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值