Java的高级特性

1.this和super的区别


2.多态性的表现:(类的属性没有多态性,属性不存在覆盖的问题,方法会有覆盖,所以会有多态)

a:方法的重载或者方法的重写
b:子类对象的多态性
1.多态使用的前提:

a:要有继承关系

b:要有方法的重写

  Person   p=new  Man();//向上转型(编译看左,运行看右)

关于向下转型:a:要使用强转符()b:为了不报ClassCastException,最好在向下转型之前,进行instance of 进行判断

  egg:  if(p.instance of Man){

                 ................     

            }else if(p.instance of Women)

           {

          .........................

              }

3.  “==”和equals()方法的区别?

  ①:"=="

   当时基本数据类型的时候?是根据判断数据类型的数值是否相等,相等返回true,否则返回false, 注意:当'=='两边的基本数据类型不相同的时候,也是比较的数据值的大小是否相等。

  当数据是引用数据类型的时候?是比较等号两边引用类型变量的地址值是否相等

 ②:equals()

 a: 只能处理引用类型的变量b:在Object类中,发现equals()仍然比较的是两个地址值是否相等,这是因为该类没有重写equals()方法


4.static关键字的

a:static :静态的,可以修饰属性,方法,代码块,内部类
   static修饰属性(那么该属性也称作类变量):

  1.由该类创建的所以对象,都共有这一个属性;

  2.其中当一个对象对该属性进行修改时,那么也会导致其他对象的该属性改变(static修饰的属性称为类变量,非static修饰的属性称为实例变量);

  3.类变量随着类的加载而加载,而且唯独只有一份,在静态域中存放;

  4.静态的变量可以直接通过'类名.类变量'来直接进行调用;

  5.类变量的加载是早于对象的,所以放对象创建好之后,也可用“对象名.类变量”来进行调用;但是“类名.实例变量”是不成立的,因为实例变量是由对象进行调用的;

   

   static修饰方法名(也称作类方法)

1.随着类的加载而加载,在内存中也只有一份;

 2.也可以直接通过“类名.类方法名”来直接调用方法。

3.静态方法内部只可以调用静态的属性和方法,而不能调用非静态的属性和方法;反之,非静态的方法可以调非静态的属性和方法也可以调用静态的属性和方法,原因是:类方法是随着类的加载而加载,然而非静态的方法只能是对象的调用,然而此时对象还没有创建出来,所以不能调用非静态的方法。住:静态方法中不可以有this,super关键字。原因如上所述!

注:静态结构的(属性,方法,代码块,内部类)的声明周期都要早于非静态的结构,同时垃圾回收器回收的时候也是要晚于非静态的结构!


5.代码块(只可以用static修饰)

  ①静态代码块:
   a:里边可以有输出语句;
   b:随着类的加载而加载,而且只能被加载一次
   c:多个静态代码块之间按照程序编写的顺序来进行执行
   d:静态代码块的运行顺序要早于非静态代码块
   e:静态代码块中只能执行静态的结构(雷属性,类方法)
  ②非静态代码块:

  a:可以对类的属性(静态的&非静态的)进行初始化操作,同时也可以调用本类声明的方法(静态的&非静态的);

  b:里边可以有输出语句;

  c: 一个类中可以有多个非静态代码块,多个非静态代码块之间按照编程的顺序来进行执行;

  d:每创建一个类的对象,非静态代码块就加载一次;

  e:非静态代码块的执行顺序要早于构造器;

   注:关于类的赋值的操作:a:默认的初始化b:显示的初始化或者代码块的初始化(此处两个按照编程的顺序来执行),c:构造器中;d:通过方法对对象的相应属性进行修改!

6.final关键字

   final:最终的,可以用来修饰属性,方法,类

  a:final修饰类:该类不可以被继承。如 String类 StringBuffer类  System类

   b:final修饰方法:该方法不可以被重写。如Object类中的getClass()方法

   c:final修饰属性:此属性就变成一个常量,一旦初始化之后,就不可以在进行赋值。习惯上,该常量用大写字母表示。此常量可以被赋值的位置:①不可以使用默认的初始化。如 final int a;  这是错误的!可以显示赋值。 如 final int a=100;②在代码块总进行赋值③在构造器中进行赋值 。  总之要在对象创建好之前赋值完成.

  d: 变量用static final 修饰称为:全局常量!。

7.abstract:抽象的,可以用来修饰类和方法

   a:abstract 修饰类:抽象类

    1.不可以被实例化

     2.抽象类有构造器(凡是类都有构造器)

     3.抽象方法所在的类一定是抽象类。

    4.抽象类中可以不存在抽象方法

  b:abstract修饰方法:抽象方法 

    1.格式 没有方法体 ,包括{ }  如:public  abstract void eat();

    2.抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。

    3.若子类继承抽象类,并重写了所有的抽象方法,则此类是一个“实体类”,既可以实例化。

    4.若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!

8.接口

 a:接口可以看做是一个特殊的抽象类。是常量与抽象方法的一个集合,不能包含变量,和一般的方法。

 b:接口是没有构造器的。

 c:接口定义的就是一种功能。此功能可以被类所实现(implements)。

 d:实现接口的类,必须重写其中的所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类。

 e:类可以实现多个接口。---------->java中的类的继承是单继承

  f:接口与接口之间也是继承关系,而且可以实现多继承

 g:接口与具体的实现类之间也存在多态性


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值