Java学习_day009(oop):引用类型数组、继承的意义

补充: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

二. 继承

代码不用自己写,自己也能用

  1. 作用:代码复用
  2. 通过extends来实现
  3. 超类/父类:派生类所共有的属性和行为
    派生类/子类:派生类所特有的属性和行为
  4. 派生类继承超类后,派生类中也会含有超类的代码
  5. 一个超类可以有多个派生类,一个派生类只能有一个超类
  6. 继承具有传递性
  7. 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的用法:

  1. super.成员变量名————访问超类的成员变量
  2. super.方法名————调用超类的方法——方法的重写
  3. 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")
		};*/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值