博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.4 4.5
阅读量:6468 次
发布时间:2019-06-23

本文共 2364 字,大约阅读时间需要 7 分钟。

4.4 对象的周期

  产生:声明初始化:分配内存空间初始化成员变量;执行类成员声明时的简单赋值;执行构造方法,对象变量的初始化

      使用:对象变量的访问:get,set 方法

      清除:自动回收,以及gc方法

4.5  类的继承与多态

  子类不能继承的:带private;构造方法

  this关键字,是声明实例变量,区别于类变量和构造方法里面的实例变量,在类的其他方法中调用构造方法用this;super关键字是调用父类的方法

继承的时候:子类对象继承与实例化

  1.     给子类对象分配空间;
  2.               从下往上一点点supre(父类),写出来的supre写在子类的构造方法首行,缺省supre调用父类的无参构造方法
  3.               自顶向下一点点地显示初始化父类,且执行父类的各种构造方法             

     对外一个接口,对内多种实现:进行通信的时候是用父类,但是具体的实现可以用子类。

对象类型的强制转换:将父类强制转换成子类:

5 java高级特性

  5.1 static关键字(静态变量,方法)

  静态变量只在系统加载其所在类的时候分配空间并初始化。在之后实例化之后不会再分配,一直用原来的地址。

  静态变量可以用于实例之间通信和实例数目统计

  静态变量和方法可以直接访问,不用实例化;如果不是静态方法就算在同一个类里面调用也需要实例化,然后用对象.方法来调用;但是静态方法就可以直接用。

  在静态方法中非静态方法可以先实例化对象,注意静态方法没有this关键字, 因为静态变量和实例化无关。

  类加载的意思是首次在程序中要用到类的地方,会进行初始化?。当再次获取的时候这时已经初始化结束?

 

class StaticInitDemo{    static i;    static{            i=5;            System.out.println(i++);}}public class TestStatic{      public static void main(String arg[]){                System.out.println(StaticInitDemo.i);}}

 

输出是i=5;i=6

5.2  final 关键字(成员变量,成员方法和类)

  final修饰之后类不能派生子类

  final关键字:保持 一致性很重要的时候,定义常量。final修饰成员变量的时候,在new对象的时候必须对其赋值,一旦赋值在当前对象中不可改变

5.3 abstrat抽象类

  抽象方法里面不具体实现抽象方法,没有方法体。含有抽象方法的类叫做抽象类。抽象类也可以包含普通方法。

5.4 接口

  接口:只是声明一个方法,而不实现方法体,是一种协议的规定。接口和抽象类的功能类似;

类继承接口之后必须实现接口里面所有的方法

  要多重继承的时候:只容许继承一个父类;实现多个接口。所以父类和接口合并的时候只能有一个具体实现的细节,剩下的都是声明。

扩展接口:新继承一些接口。优点:接口可以抽象出很多不相关类的相似性。

 5.6 泛型与多态

  1   泛型的思想:类和方法的泛化,通过参数化实现,这个参数叫做类型参数,通过类型参数实现的方法或接口,可以在具体调用的时候进行抽象

简单理解就是,定义的时候定义成T(类型参数),在泛型类调用的时候给这个T一个具体的类型,这样不会出现传入类型错误时候编译检测不出错误。

this关键字只有在区分成员变量和局部变量的时候用,其他时候没有相同的成员变量名和局部变量名的时候可以不用this,直接用成员变量。

  java里面有很多类是泛型类;自定义泛型类:泛型类的传参不再是一个对象而是一个类型。

//泛型类的定义public class box
{ private T t; public void add(T t) { this.t=t; } public T get() { return t; }}//泛型类的调用public class MyBoxTest { public static void main(String args[]) { box
mybox=new box
(); mybox.add(new Integer(90)); Integer i=mybox.get(); System.out.println("The Integer is :"+i); }}

一个泛型l类可以有多个类型的参数,但是每个参数在泛型中应该 唯一。:MyBox<T,T>就不对但是MyBox<T,U>就可以

泛型在调用实例化时可以用父类作为类型参数,但是之后实例里面的参数使用的时候可以用子类。

调用的时候用Box<Number>,在实例中使用Box<Integer>,但是Box<Number>和Box<Integer>不是父类与子类的关系。

  2 通配符(实现泛型的父类与子类)

通配符?,表明泛型是一种未知的类;受限通配符?extends ....super....,规定了泛型的上限和下限。这个通配符在调用的时候定义一大类泛型,是其他一些具体泛型的父类。

   3 泛化方法

  用泛型参数来泛化方法的时候要注意方法的定义:public <U> void inspect(U u){ }。这个定义里面类型是U

转载于:https://www.cnblogs.com/yttas/p/10442524.html

你可能感兴趣的文章
[转]Windows的批处理脚本
查看>>
lnmp高人笔记
查看>>
子程序框架
查看>>
多维数组元素的地址
查看>>
数据库运维体系_SZMSD
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
静态库 调试版本 和发布版本
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>
==与equals()的区别
查看>>
基本分类方法——KNN(K近邻)算法
查看>>
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
面象过程与面象对象
查看>>
谷歌设置支持webgl
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>