关于一个类的说明:
//学生类
//学生类就是一个模板
//描述了所有学生的共同特征【状态+行为】
//当前类只描述了学生的状态信息【属性】
public class Student01 {
//类体=属性+方法
//属性【存储数据采用变量的形式】
//由于变量定义在类体当中方法体之外 ,这种变量称为:成员变量
//所有学生都有学号信息,但每个人的学号都不同
//所有访问学号必须要先创建对象,再通过对象来访问这个对象的学号信息
//学号信息不能直接通过类去访问,所以这种成员变量有被称为:实例变量
String name;
int age;
boolean sex;
String adder;
}
如何创建一个类?如何使用一个类?
例1:建立一个学生类
public class Student {
//属性【描述的是对象的状态信息】
//属性通常采用变量的方式来定义
//在类体当中,方法体之外定义的变量称为“成员变量”
//成员变量没有赋值,系统默认值:一切像0看齐
//学号
int sno;
//姓名
String name;
//年龄
int age;
//方法:方法描述对象的动作信息
//当前例子就只描述属性,不描述方法
}
调用类并输出学生信息
/*
* 对象的创建和使用
*测试学生类
*/
//通过一个类可以实例化n个对象
//实例化对象的语法: new 类名();
//new 是java语言当中的一个运算符
//new的作用就是创建对象。在java堆内存当中开辟新的内存空间
public class OOTest01 {
public static void main(String[] args) {
int i = 10;
//Student是一个引用数据类型;
//s是变量名 new Student()是一个学生对象。
Student s = new Student();
//访问实体变量的语法格式:
//读取数据: 引用.变量名
//修改数据: 引用.变量名 = 值
s.sno = 118509110;
s.name = "meini";
s.age =18;
int stuNo = s.sno;
String stuName = s.name;
int stuAge = s.age;
System.out.println("学号是"+":"+stuNo); //未赋值像0看起
System.out.println("姓名是"+":"+stuName);
System.out.println("性别是"+":"+stuAge);
Student p = new Student(); //另一个同学
p.sno = 89451;
p.name = "zhaolongjie";
p.age =88;
System.out.println("学号是"+":"+p.sno); //未赋值像0看起
System.out.println("姓名是"+":"+p.name);
System.out.println("性别是"+":"+p.age);
}
}
例2:用户类
/*
* 用户类
*/
public class User {
//属性【以下都是成员变量之实例变量】
//用户编号
//int是一种基本数据类型:整数型;
//no是一个实例变量;
int no;
//用户名
//String是一种引用数据类型,代表字符串;
//name是一个引用
//name是一个实例变量
String name;
//家庭住址
//Address 是一种引用数据类型,代表家庭住址
//addr是一个引用
//addr是一个实例变量
Address addr;
}
用户类中的地址类
/*
* 家庭住址的类
*/
public class Address {
//城市
String city;
//街道
String street;
//邮编
String zippood;
}
调用这两个类
/*
* 测试用户类
*/
public class OOTest02 {
public static void main(String[] args) {
User a = new User();
a.no = 110;
a.name = "ninin";
a.addr = new Address();
a.addr.city = "刺激战场";
a.addr.street = "P城";
a.addr.zippood = "甘⑤";
//引用可以是一个变量,变量可以是成员变量,也可以是局部变量
System.out.println(a.no);
System.out.println(a.name);
System.out.println(a.addr.city);
System.out.println(a.no + "的"+a.name+"住在"+a.addr.city+a.addr.street+a.addr.zippood);
}
}
调用这个类2
public class OOTest03 {
public static void main(String[] args) {
User b = new User();
Address c = new Address();
b.addr = c;
b.name = "小红";
b.no =1111;
b.addr =c;
c.city = "北京";
c.street= "朝阳";
c.zippood= "大沟子";
System.out.println(b.name );
System.out.println(b.no );
System.out.println(c.city);
System.out.println(c.street);
System.out.println(c.zippood);
System.out.println(b.addr);
}
}
关于System.out.println(b.addr);
需要在Address类里加一个方法
待学。。。
例3:婚姻类
妻子类
public class Wife {
String id;
Husband h;
}
丈夫类
public class Husband {
String id;
Wife w;
}
应用 :由丈夫找妻子 由妻子找丈夫
public class OOTest04 {
public static void main(String[] args) {
//创建一个丈夫对象
Husband xixi = new Husband();
xixi.id = "嘻嘻";
//创建一个妻子对象
Wife haha = new Wife();
haha.id = "哈哈";
//结婚 关联信息
xixi.w = haha;
haha.h = xixi;
//输出结果相同但是含义不同
System.out.println(xixi.id+"的妻子是"+haha.id);
System.out.println(xixi.id+"的妻子是"+xixi.w.id); //直接通过丈夫的信息调出妻子的名字
例4:空指针异常情况
public class Customer {
int id;
}
public class OOTest05 {
public static void main(String[] args) {
Customer c = new Customer();
System.out.println(c.id); //0
//以下程序编译可以通过,因为符合语法
//运行出现空指针异常
//空引用访问“实例”相关的数据一定会出现空指针异常
c = null;
System.out.println(c.id);// java.lang.NullPointerException
}
}
//“实例”相关的数据表示:这个数据访问的时候必须有对象的参与,这种数据就是实例相关的数据。
例5:
public class Computer {
String band;
String color;
String size;
}
public class Student {
int sno;
String name;
Computer dn;
}
public static void main(String[] args) {
Student m =new Student();
m.name = "小胡";
m.sno = 157353;
Computer c =new Computer();
m.dn = c;
m.dn.band = "Dell";
m.dn.color="白";
m.dn.size ="25";
System.out.println(m.name+"的学号是:"+m.sno+"她有一台"+m.dn.color+"色的"+m.dn.size+m.dn.band+"电脑");
}