补充:null和NullPointerException
null:表示空,没有指向任何对象;
若引用值为null,则该引用不能进行任何操作了,
若操作则发生NullPointerException空指针异常
int a=null;//编译错误
int[]arr=null;
String zs=null;
Student zs=new Student();
zs.age=27;
zs=null;//null表示空,没有指向任何对象
zs.age=26;//NullPointerException空指针异常
一. 引用类型数组
1).
-
Student[]stus=new Studebt[13];
-
stus[0]=new Student("zs",26,"lf");
-
stus[1]=new Student("ll",23,"bf");
-
stus[2]=new Student("ww",22,"cf");
-
System.out.println(stus[0].name); //输出第一个学生的名字
-
stus[1].age=22; //修改第二个学生的年龄为22
-
stus[2].sayhi(); //第三个学生给大家问好
-
//int[]arr={1,4,5}
-
Student[]stus=new Student[]{
-
new Student("zs",26,"lf"),
-
new Student("ll",23,"bf"),
-
new Student("ww",22,"cf")
-
};
int[]arr=new int[3];//基本类型数组
//声明整形数组arr,包含3个元素,每个元素都是int型,默认值为0
arr[0]=100;//基本类型元素——直接赋值即可
double[]d;//基本类型数组
Student[]stus=new Student[3];//引用类型数组
//声明Student型数组stus,包含3个元素,每个元素都是Student型,默认值为null
stus[0]=new Student("zs",25,"lf");//引用类型的元素——不能直接赋值需new对象;是什么类型,new后面就加什么,然后该调用构造调用
stus[0]————为Student类型,凡是Student里面有的都能点出来
stus[0].age;stus[0].name;stus[0].address;stus[0].Student();
stus.age=26;//编译错误,数组不可以直接
Airplane[]as=new Airplane[10];//引用类型数组
//声明Airplane型数组as,包含10个元素,每个元素都为Airplane型,默认值为null
as[0]=new Airplane();/**上面的new是在创建Airplane数组对象,这个是创建Airplane对象 */
Bee[]bs=new Bee[20];
//声明Bee型数组,包含20个元素,每个元素都是Bee型,默认值为null
二. 继承
代码不用自己写,自己也能用
- 作用:代码复用
- 通过extends来实现
- 超类/父类:派生类所共有的属性和行为
派生类/子类:派生类所特有的属性和行为 - 派生类继承超类后,派生类中也会含有超类的代码
- 一个超类可以有多个派生类,一个派生类只能有一个超类
- 继承具有传递性
- Java规定:构造派生类之前需要先构造好超类;
——在派生类的构造方法中,若没有调用超类的方法——则默认super()调用超类的无参构造方法;
——在派生类的构造方法中,若自己调用了超类的构造方法——则不再默认提供
super()调用超类的无参构造方法必须位于第一行
class Person{//——————————超类/父类
String name;
int age;
String address;
void eat(){};
void sleep(){};
}
class Student extends Person{//继承Person——————派生类/子类
String stuld;
void study(){};
}
class Teacher extends Person{ //Teacher zs=new Teacher();
String salary; //zs.salary/teach();
void teach(){}; //zs.name/age/address/eat()/sleep();
}
class Doctor extends Person{//——————派生类/子类
String level;
void cut(){};
}
泛化————就是继承
三. super:指代当前的超类对象
super的用法:
- super.成员变量名————访问超类的成员变量
- super.方法名————调用超类的方法——方法的重写
- super();————调用超类的构造方法
小案例
练习
Student[] stus=new Student[3];
stus[0]=new Student("zs",25,"ls");
stus[1]=new Student("ls",26,"jms");
stus[2]=new Student("ww",22,"sd");
System.out.println(stus[0].name);
stus[1].age=22;
stus[2].sayhi();
Student[] ss=new Student[]{
new Student("ww",26,"aw"),
new Student("zs",25,"ld"),
new Student("ls",26,"ls")
};
/*5 Student[] stus=new Student[3];
* stus[0]=new Student("zx",12,"as");
* stus[1]=new Student("as",21,"dsd");
* stus[2]=new Student("ad",55,"fe");
* System.out.println(stus[0].age);
* stus[2].age=44;
* stus[1].sayhi();
* Student[]ss=new Student[]{
* new student("asd",21,"xzc"),
* new Student("AS",34,"asd"),
* new Student("ASD",213."cx")
* };
*/
/*4 Student[]aa=new Student[2];
aa[0]=new Student("asd",55,"wqe");
aa[1]=new Student("xzc",88,"vd");
aa[1].age=23;
aa[1].sayhi();
System.out.println(aa[2].name);
Student[]sa=new Student[]{
new Student("xzc",21,"df"),
new Student("xcz",43,"cxv")
};*/
/*3 Student[]aa=new Student[3];
aa[0]=new Student("sad",45,"sad");
aa[1]=new Student("zxc",78,"x");
aa[2]=new Student("xzc",55,"xc");
aa[1].age=22;
System.out.println(aa[0].name);
aa[2].sayhi();
Student[]sd=new Student[]{
new Student("xz",45,"xzc"),
new Student("xzc",21,"xc")
};*/
/*2 Student[]lj=new Student[2];
lj[0]=new Student("xz",21,"cxz");
lj[1]=new Student("xzs",12,"xca");
lj[1].age=33;
lj[1].sayhi();
System.out.println(lj[0].address);
Student[]cv=new Student[]{
new Student("xz",12,"sad"),
new Student("xzc",45,"xzc")
};*/
/*1 Student[]s21=new Student[3];
s21[0]=new Student("xzc",21,"cv");
s21[1]=new Student("ZXc",25,"df");
s21[2]=new Student("fd",32,"dt");
s21[1].address="af";
s21[2].sayhi();
System.out.println(s21[0].age);
Student[]cv=new Student[]{
new Student("xzc",55,"xz"),
new Student("zxc",21,"cx"),
new Student("fd",21,"bf")
};*/