J2SE基础:1.类和对象基础

时间:2021-11-12 05:05:01

什么是对象


在Java语言,全部的人,事物或者模块都是一个对象。

同样的对象具有一些同样的特性。



狗,猫,蛇3个对象(动物的对象)



苹果,梨,桔子3个对象(水果的对象)

什么是类


能够将现实生活中的对象经过抽象

这样的抽象数据类型称为类。

动物类(Animal)

水果类(Fruit)

类和对象的关系


类是对象的模板(抽象化表示),对象是类的实例化(详细化的展现)

类的组成结构

Java是纯面向对象(除了8种基本数据类型)

而对象是从类产生的。因此类是组成Java程序最基本也是最核心的

元素。

变量(属性,成员变量)



   方法(函数,成员方法,责任)



   消息(对象与对象之间的通讯,对象数据之间的传递)

属性的定义

属性的的定义

属性的初始值(默认值)

booleanfalse

byte/short/int/long 0

float 0.0f

double 0.0d

char ‘\u0000’

对象类型 null

变量的分类与作用域

类变量:类对象属于对象。static修饰的变量称为类变量。

静态区中。仅仅实例化一次,因此仅仅占领一次内存。



对象的成员变量:成员变量是属于对象。

堆区。



局部变量。局部方法中定义的变量,以及形式參数都是局部变量。

栈区。

变量的作用域(生命周期)

就是不同类型的变量在内存中存活的时间。

方法的分类:

按返回值划分:

有返回值

无返回值

按參数划分:

有參数方法

无參数方法

void sum(int x,int y):參数定义之间,用逗号隔开。

sum(x,y);//调用也是用逗号隔开。

实參(实际的參数)

形參(形式參数)。

參数传递时,实參传给形參有两种方式:
A:假设传递是基本数据类型的话,那么仅仅是值的拷贝。
B:假设传递是对象类型的话,那么传递的是对象的地址。

按功能方法

构造方法

实例方法(对象方法,成员方法)

类方法

构造方法:

是实例化对象必须运行的操作。
用于构建一个新的对象的初始化操作。
假设没有构造方法的话,系统自己主动创建一个空的构造方法。

假设有构造方法的话,系统将不再构建。

注意点:

构造方法不是一个无參的构造方法

public Person(int id){

}

Person person = new Person();//错误

A:Person person = new Pserson(1);

B:再提供一个空的构造方法。

this:

表示当前对象。

this指向自己的引用

能够用this调用当前对象的属性与方法。

方法的重载(OverLoad)

方法重载即指同一个类内多个方法能够享有同样的名字。

可是这些方法的參数必须不同(參数个数不同或參数类型不同)。

调用的时候通过參数的个数或者的类型由编译器来寻找究竟要调用哪一个

方法。



类方法,对象方法,构造方法都能够做方法的重载。

当重载的參数假设有继承关系时。除非在程序中精确描写叙述要

传递的类型。否则调用的都是符合子类參数的方法。

Object obj = null;
String str = null; test.print(obj); //精确类型
test.print(str); //精确类型
test.print(null); //都匹配的类型,调用子类的方法。 public void print(Object some){
System.out.println("Object version print");
}
public void print(String some){
System.out.println("String version print");
}
/**
* 定义一个Student的类
*/
public class Student{
//属性声明的部分
int stu_id;
char stu_sex;
String stu_name; //类变量
static String class_id = "JN1001"; //有返回值的方法
int getScore(){
//定义局部变量
int english = 0;
return english;
}
int getScope2(){
double math = 12.345; return (int)math;
}
//无返回值的方法
void study(){
System.out.println("大家在学习Java");
} public static void main(String args[]){
Student stu = new Student();
stu.study(); int result = stu.getScore(); int result2 = stu.getScope2();
System.out.println("result = "+result + ",result2 = "+result2); } }
public class Student_Method{

	//构造方法
public Student_Method(){
System.out.println("对象的构造方法");
} //对象(成员)方法
int divde(int x,int y){
return x / y;
} //类方法
static int sum(int x,int y){
return x + y;
} public static void main(String args[]){
//调用类方法
Student_Method.sum(2,3); //调用成员方法
//Student_Method.divde(2,3); //不能调用
System.out.println("1111");
Student_Method test = new Student_Method();
System.out.println("222");
test.divde(3,4);
}
}
public class TestOverLoad{
public static void main(String[] args){
Test test = new Test();
//test.print(null);
Object obj = null;
String str = null;
StringBuffer strBuffer = null;
System.out.println(obj);
System.out.println(str);
test.print(obj);
test.print(str);
test.print(strBuffer);
test.print(null);
}
}
class Test{ public void print(Object some){
System.out.println("Object version print");
}
public void print(String some){
System.out.println("String version print");
}
public void print(StringBuffer some){
System.out.println("StringBuffer version print");
} }