您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > java上课笔记基础
修饰符同一个类中同一个包中子类中任意privateYes缺省YesYesprotectedYesYesYespublicYesYesYesYes******************方法重写有继承关系时,子类重写父类方法方法名相同,方法的参数相同,返回类型也相同,方法体不同注:方法重写,子类访问修饰符不能比父类更严格(不能更小)重写方法不允许声明抛出比被重写方法范围更大的异常类型。******************方法重载:本类中重写多个方法(典型特列就是构造方法)方法名相同,参数类型不同,参数个数不同,参数位置不同例:publicvoidsay(intxxx){}publicintsay(Stringxx,intx){return1;}publicvoidsay(intx,Stringxx){}*******super代表父类this代表本类1.用于:当子类与父类属性或方法名相同时,区分他们super.属性名super.方法名()this.属性名this.方法名()2.调用构造方法this()调用本类的构造方法super()调用父类的构造方法注:这种使用方法只能使用在构造方法中,并且必须是方体中的第一行中实例化子类,必须先实例化父类(通过new关键字调用子类的构造方法,而子类的构造方法会隐式的调用父子默认构造方法)*******************上塑造型与下塑造型上塑造型会自动转换下塑造型必须强转Studentst=newStudent();Personps=st;//上塑造型学生是一个人ps.say();Personps2=newStudent();Studentst2=(Student)ps2;//下塑造型人是一个学生st2.say();如果一个变量声明为父类类型,但实际引用的是子类对象,则其就不能直接访问子类中添加的属性和方法。但,如果子类与父类都有相同的方法时,是用调用子类方法instanceof用于继承关系中的对像,判断这个对像是否为继承关系中某一个类型的实例例:Personp=newPerson();Students=newStudent();Stringaaa;if(pinstanceofStudent)System.out.println(P是Student的一个实列);elseSystem.out.println(xxxx);static静态不通过实例化就能访问1静态属性类名.静态属性名注:子类与父类是共享数据的2静态方法类名.静态方法名()3静态代码块:只能初始化静态属性static{name=bbb;System.out.println(静态代码块1)}注:静态代码块是在类加载时就执行,比构造方法先执行4静态导入把其它包下的某个类中的静态方法或静态属性导入到本类中,就可直接使用导入前要:类名.静态方法名()来调用导入后:直接静态方法名()来调用例:importstatictestThread.MyRunable.*;单例模式:得到唯一的一个实例1.把构造方法私有化2.定义一个static的成员变量P,数据类型就是本类型3.写一个得返回一个实例的静态方法,当p变量为null时,就给new一个实例,并返回,当p不为null那直接返回p的值classPersonextendsObject{privatestaticPersonp=null;privatePerson()//构造设私有{System.out.println(调用Person的默认构造方法);}publicstaticPersongetPerson(){if(p==null)p=newPerson();returnp;}publicvoidsay(){System.out.println(person);}测试:Personn=Person.getPerson();Personx=Person.getPerson();System.out.println(n==x);final修辞符:(终态)final标记的类不能被继承。final标记的方法不能被子类重写。final标记的变量即成为常量,只能赋值一次。final标记的成员变量必须在声明的同时初始化或在每个构造方法中显式初始化。final不允许用于修饰构造方法、抽象类以及抽象方法。*********抽像类******抽像类:以abstract修饰的类,就是一抽像类,抽像类可以包括抽像方法和实现方法注:*抽像类是可以被继承(一个抽像类可以继承别一个抽像类,实现类可以继承抽像类,但要全部实现抽像类中的所有抽像方法)*抽像类继承抽像类,可以实现一部分抽像方法*抽象类不能被实例化*抽象类中可以不包含抽象方法;*只要一个类中有一个抽像方法,那这个类必须是抽像类抽像方法:只有方法头,而没有方法体,并且,方法头用abstract修饰的(只是一个定义,而具体实现,将就实现方法来规定)publicabstractvoidsay();实现类:类中所有的方法都是实现方法,而没有抽像方法实现方法:publicvoidsay(){System.out.println(xxx);}三个等级BOSS主管打工的BOSS安排任务(任务就是我们的抽像方法)分配给下一级主管主管拿到BOSS安排下的任务,可以选择就做一些任务(实现父类的某些抽像方法),也学再分配给下一级(让子类继承它)打工者无条接受上级所安排任务,(实现类,必须实现父类所没有实现的抽像方法)*************************接口**********接口是一个特殊的抽像类用interface关键字来定义注:接口只能是被实现类用implements关键字来实现接口中只能定义抽像方法和常量(public和static,final修辞的常量,pulbic的方法这修辞符可以不显示写出来)interfaceMyinterface{inta=22;//publicvstaticfinalinta=22;abstractvoidsay();//publicabstractvoidsay();}为什么有抽像类,还有个接口:抽像类只能是单一继承,接口可以实现多个接口,接口可继承多个接口一个实现类可以实现多个接口,那必须实现所有接口的所有抽像方法抽像类可以实现接口,多实现接口,但接口不能继承抽像类接口能继承接口,还可以多继承接口********************(普通类(实现类)只能单一继承)例:classmyimplementsMyinterface,myinterface2计算机usb接口插上U盘USB移动手机内部类:在类里面嵌套另一个类例:publicclassA{//…publicclassB{//普通内部类}publicstaticclassC{//静态内部类}publicvoidsay(){classAA{//局部内部类,方法内部类,只能是本方法内使用}AAa=newAA();}}实例化内部类时,必须先实例父类,再实例内部类Aa=newA();A.Bb=a.newB();//实例化普通内部类A.Cc=newA.C();//实例化静态内部类匿名内部类:*******************************************************cp.setUsb(newUsb(){//Usb是一个接口或抽像类Stringdate=匿名内部类;@Overridepublicvoidwrite(Stringd){this.date=d;}@OverridepublicStringread(){returnthis.date;}});********************************************集合:存放任何类型对像一个容器与数组:数组存放同一种类型,数组大小是固定而集合存放不同类型的数据,大小是可变的Map接口Collection接口两个接口Collection下有两个子接口:Set接口与List接口list与set可否可以重复的对像Map接口:表示存放一组(Key,value)并且要求key是一个唯一值存放类似于这种数据:1:张三2:李四3:王麻子常用方法:put(Kkey,Vvalue)***************将指定的值与此映射中的指定键相关联(可选操作)。get(Objectkey)***************返回此映射中映射到指定键的值。clear()从此映射中移除所有映射关系(可选操作)。containsKey(Objectkey)如果此映射包含指定键的映射关系,则返回true。containsValue(Objectvalue)如果此映射为指定值映射一个或多个键,则返回true。remove(Objectkey)如果存在此键的映射关系,则将其从映射中移除(可选操作)。size()返回此映射中的键-值映射关系数。values()返回此映射中包含的值的collection视图。isEmpty()如果此映射不包含键-值映射关系,则返回true。常用的Map接口的实现类:HashMap,Hashtable,TreeMap****************HashMap:允许使用null值和null键不同步(多线程时不安全)Hashtable:非null对象都可以用作键或值。同步TreeMap:非null对象都可以用作键或值,同步,并且key可以进行排序(???)Collection接口下常用的方法:add(Eo)确保此collection包含指定的元素(可选操作)。iterator()返回在此collection的元素上进行迭代的迭代器clear()移除此collection中的所有元素(可选操作)。isEmpty()如果此collection不包含元素,则返回true。size()返回此collection中的元素数。toArray()返回包含此collection中所有元素的数组。List接口:可以存储放重复元素有序get(intindex)返回列表中指定位置的元素。add(intindex,Eelement)在列表的指定位置插入指定元素(可选操作)。remove(intindex)移除列表中指定位置的元素(可选操作)。List接口常用的实现类:ArrayList可变长的数组可存放null不同步通过下标进来访问所以查询速度快,插入数据慢LinkedList可存放null不同步查询速度慢,优点增加删除快Vector同步的安全Stack同步的先时后出原则遍历集合方法:for(inti=0;iarray.size();i++)System.out.println(array.get(i));//增强型循环()foreach循环是由JDK1.5提供的for(取出来的对像的数据类型变量:Collection集合)for(Stringstr:array)System.out.println(str);for(Objecto:array)System.out.println(foreach循环得到的数据为:+o);3:通过Iterator接口,迭代器hasNext()如果仍有元素可以迭代,则返回true。next()返回迭代的下一个元素。///第一种for(inti=0;iarray.size();i++)System.out.println(array.get(i));//第二种//增强型循环()foreach循环是由JDK1.5提供的for(取出来的对像的数据类型变量:Collection集合)for(Objecto:array)System.out.println(foreach循环得到的数据为:+o);//第三种Iteratorit=array.iterator();while(it.hasNext()){System.out.println(it.next());}迭代Map对像:Settemp=hm.keySet();//把所有key转化成一个set集Iteratorit=temp.
本文标题:java上课笔记基础
链接地址:https://www.777doc.com/doc-4516118 .html