Java笔记

学习过程中记录的一些小摘要,这些都是学习Java的重中之重,需要慢慢地领悟,理论必须与实践相结合,才能融会贯通,学以致用,在此与大家共勉!

 

1.当子类中和父类中的方法的名称相同的时候,子类会覆盖隐藏父类的方法。也就是说,子类在引用调用方法时,默认为是引用它自己定义的方法,而将从父类那里继承而来的方法“隐藏”。

2.在引用方法和变量的时候需要指明引用的是父类的方法和变量还是子类的方法和变量。
    怎么样指明?使用super和this分别指着有继承关系的子类和父类(超类)。
    this出现在程序代码中,指的是所在的该类的当前对象。
    super指的是所继承的超类对象。
    this和super均不用先声明即可直接使用。


  super的使用有三种情况:
 用来访问父类被隐藏的成员变量如:super.变量名;
 用来调用父类中被重写的方法,如:super.方法名(参数);
 用来调用父类的构造函数,如:super(参数);

3.多态性是由封装性和继承性引出的面向对象的程序设计的另一特性。
多态的特点是采用同名方式,根据调用方法时传送的参数的多少,参数类型的不同,调用不同的方法。在java语言中多态性体现在两个方面:方法重载和方法重写(方法覆盖)。
  a。方法重载指调用一个类中多个方法享有相同的方法名,但在执行时期可以根据其参数数量与类型来判断要调用此方法的哪一种操作,这些同名方法可按需要自定义。
 使用方法重载时需要注意以下几个方面:
 区别在于:参数类型不同,或个数不同;
 参数类型的区分度要够,例如不能是同一简单类型,如int,long   返回类型不能用来区分重载的方法。
  构造方法的重载
  构造方法是一种特殊的方法,构造方法也可以实现重载。
  在使用关键字new创建对象的时候,系统会根据构造方法的参数类型,参数个数的不同调用相应的构造方法。
 b。方法的覆盖(方法重写)
 继承是指子类可以继承父类的方法,但是由于子类有时具有自己特有的特征,造成由父类继承而来的方法在子类中不能使用。这样java允许子类对父类的同名方法进行重写,也就是子类与父类已经定义的方法具有相同的名称,但是方法的内容不同,这种多态性成为方法重写(方法覆盖),即子类的方法“隐藏”父类的同名方法。另外,我们需要注意的是:重写的方法和父类中被重写的方法要具有相同的名字,相同的参数和相同的返回类型。
 
 
面向对象的特性:
   封装性:四种修饰符的访问权限
   public private protected friendly
   多态性
        方法重载:方法名相同,参数类型,个数不同,区分度要够
        方法覆盖(方法重写):子类继承父类相同的方法
        继承:单一继承,继承的实现(extends)

4.抽象类是专门设计让子类来继承的,抽象类中通常包括一个或多个抽象方法(这些方法只有方法说明,没有方法体)
抽象方法必须被子类重写
定义抽象类是因为属于同一类的多个子类,在实现某些方法时,会采取不同的实现方式。

抽象类的实现
java语言中,用关键字abstract修饰一个类时,这个类就是抽象类,用关键字abstract修饰一个方法时,这个方法就是抽象方法。
  定义一个抽象类的格式如下:
 abstract class 类名
{
   成员变量;
   方法();//定义一般成员方法
   abstract 方法();//定义抽象方法
}
抽象方法使用abstract修饰
抽象方法只有声明,没有方法体,用分号表示声明的结果
当一个非抽象类继承其抽象类方法时,必须实现其父类所有的抽象方法
抽象类中可以有非抽象方法
抽象类就好像是给出设计方案而没有去具体实施,真正去实现其定义的抽象方法的是它们的子类来完成的。
由于抽象类没有给出具体实现方案,所以为子类提供了灵活多样的实现方法。

5.接口
多重继承关系要求子类继承了多个父类的成员变量和方法,这样就导致子类具有多种多样的方法和实现形式,而且导致子类中方法和变量的膨胀。接口主要是为了解决多重继承的问题。
 接口的定义包括两部分:接口声明和接口体  格式如下:
   [访问权限] interface 接口名 [extends 父接口名1,父接口名2,……]
    {
 //接口体

}

extends后面可以同时继承多个接口,但是只允许继承一个类。
接口主要是描述类可以具有什么样的功能,但并不给出每个功能的具体实现
与类不同,在接口中只能定义常量属性。常量属性的修饰符默认为public static final
常量的定义格式   修饰符 数据类型 常量名=常量值;
常量名通常用大写,定义的常量可以被实现该接口的多个类共享。
定义一个接口,就有点像定义一个抽象类一样,所声明的方法不必加abstract,亦被视为abstract。即接口中定义的方法必须是抽象的。
在接口中只进行方法的声明,而不提供方法的实现,所以方法定义没有方法体,且结尾处用分号“;”结束,方法定义的格式:
   返回类型   方法名([参数表]);

接口的实现是指在一个类的声明中使用关键字“implements”
   class 类名 implements 接口1,接口2,……

在接口的定义中,变量名称采用大写的格式,方法只是定义,没有具体的实现内容,而且要以分号“;”结束此语句。

 

接口中的方法都是抽象方法;
接口中的方法没有方法体,而且以分号结束;
接口不是类,没有构造方法;
接口中的变量都是public static final常量


 //多态
 public abstract class Shape{
  public abstract void draw();
}

 

 public class Line extends Shape{
  public void draw(){

  System.out.println("xian");}
}


 public class Circle extends Shape{
  public void draw(){

  System.out.println("yuan");}
}

 public class Test{

 public static void main(String args[]){
  Shape m=new Circle();
  m.draw();
}

}
 //接口
 public interface FirstIF{
 public void a();

 public void b();//方法都是公有的抽象的,不是静态地
 }
 
 public class A1 implements FirstIF{
 public void a(){
  System.out.println("a1");
}

 public void b(){
  System.out.println("b1");
}
 
}

 public class Test{

 public static void main(String args[]){
  FirstIF m=new A1();
  m.a();
}
}

 

 

 


                      collections
存储  list                       查找 set                    map

Vector   ArrayList   LinkedList       HashSet         TreeSet
线程安全  非线程安全 使用双向链表实现 无get方法,分类   有序
       非线程安全      无序,不重复

 

 

 

 

 

你可能感兴趣的:(java)