类和对象

来源:互联网 发布:php chmod 777 编辑:程序博客网 时间:2024/05/22 03:18
一:什么是类?什么是对象?
1.现实世界是由很多很多对象组成的
基于对象抽出了类
2.对象:真实存在的单个的个体
类:类型/类别,代表一类个体
3.类中可以包含:
(1)所有对象所共有的属性/特征——>变量
(2)所有对象所共有的行为——>方法
4.一个类可以创建多个对象
同一类型的多个对象,结构相同,数据不同
5.类是对象的模板,对象是类的具体的示例

二:如何创建类?如何创建对象?如何访问成员?
1.成员变量与局部变量的差别如下:
局部变量:
(1)定义在方法中;
(2)没有默认值,必须自行设定初始值;
(3)方法被调用时,存在栈中,方法调用结束时局部变量从栈中清除;
成员变量:
(1)定义在类中,方法外;
(2)由系统设定默认初始值,可以不显式初始化;
(3)所在类被实例化后,存在堆中,对象被回收时,成员变量失效;
2.null:空,没有指向任何对象
若引用的值为null,则该引用不能再进行任何操作了,
若操作,则发生NullPointerException空指针异常
如:下列空指针异常
Teacher teacher = null;   //引用teacher中的值为null,没有指向任何对象; 
teacher = new Teacher();  //引用teacher指向了一个Teacher对象; 

3.同一个文件中,可以包含多个类
(1)public修饰的类,只能有一个
(2)public修饰的类,必须与文件名相同

package oo.day01;public class Test {public static void main(String[] args){Teacher linsa = new Teacher();//创建了Teacher的一个对象//访问成员变量linsa.name="linsa";linsa.age =24;linsa.salary=5000;linsa.print();}}class Teacher {//创建了一个Teacher类String name;int age;double salary;void print(){System.out.println("name="+name);System.out.println("age="+age);System.out.println("salary="+salary);}}

结果如图:



三.方法的构造:
1.方法的签名:方法名+参数列表
2.方法的重载(Overload):——>重点
(1)发生在一个类中,方法名称相同,参数列表不同
(2)编译器在编译时会根据方法签名自动绑定调用的方法
3.构造方法:
(1)给成员变量赋初值
(2)与类同名,没有返回值类型
(3)在创建对象时被自动调用
(4)若自己不写构造方法,则编译器默认提供一个无参构造方法,
若自己写了构造方法,则不再默认提供
(5)构造方法可以重载
4.this:指代当前对象,哪个对象调方法指的就是哪个对象
       只能用在方法中,方法中访问成员变量之前默认有个this.
  this的用法:
(1)this.成员变量名----------访问成员变量
(2)this.方法名()------------调用方法(一般不用)
(3)this()-------------------调用构造方法

package oo.day02;//学生类public class Student {//成员变量String name;int age;String address;Student(){this(null,0,null);}Student(String name){this(name,0,null);}Student(String name,int age){this(name,age,null);}Student(String name,int age,String address){this.name=name;this.age=age;this.address=address;}//方法void study() {System.out.println(name+"在学习...");}void sayHi() {System.out.println("大家好,我叫"+name+"今年"+age+"岁了,家住"+address+"。");}}

package oo.day02;//学生类的测试类public class StudentTest {public static void main(String[] args) {Student zs = new Student("zhangsan",25,"河北廊坊");zs.study();zs.sayHi();Student ls = new Student("lisi",26,"黑龙江佳木斯");ls.study();ls.sayHi();}}

结果如图:


四.引用类型数组:
1.Student[] stus=new Student[3];
stus[0] = new Student();
stus[1] = new Student();
stus[2] = new Student();
2.Student[] stus = new Student[]{
new Student(),
new Student(),
new Student()
      };
3.int[][] arr=new int[3][];
arr[0]=new int[2];//arr中第一个元素中有两个元素
arr[1]=new int[3];
arr[2]=new int[2];
arr[1][0] = 100; //给arr中第2个元素中的第1个元素赋值为100
4.int[][] arr = new int[3][4];//3行4列
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j] = 100;
}
}










































原创粉丝点击