`
jingwuyuan
  • 浏览: 9214 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java核心技术基础知识个人总结之——接口、内部类与代理

阅读更多
一、接口:是对类的一组需求的描述。接口中所有的方法自动地属于public,所以不用提供关键字public。在接口中还可以定义常量,但是接口绝对不能含有实例域,也不能在接口中实现方法。类实现接口用implements关键字,实现接口要实现接口的所有方法,并且方法必须声明为public。
Arrays里的静态方法sort(Object[] o)要求数组中的元素必须属于实现了Comparable接口的类(实现该接口的int CompareTo(T other)方法)。
1、接口的特性:不能使用new运算符实例化一个接口,但是可以声明一个接口的变量引用一个实现了该接口的类的对象。可以使用instanceof来检查某个对象是否实现了某个接口。接口中的域将被自动设为public static final。JAVA每个类只能够拥有一个超类,但却可以实现多个接口,实现的各个接口用逗号隔开。

二、对象克隆:先掌握protected这个访问权限:相同包里的类可以互相访问protected方法,子类可以访问超类的protected方法,但是超类并不能访问子类的protected方法,就算是子类覆盖了超类的方法。子类都继承父类的protected方法,并且也是protected的,如果子类不在一个包下,也不能互相访问这个继承于超类的方法,也就是说子类继承的超类的protected的方法不具有包的访问权限,要访问的话除非又让另一个类去继承他。(不是所有的子类都可以看做是一个超类吗?但是这里一定要注意,他们继承超类的protected方法不能互相访问,除非他们和超类在一个包下)
浅克隆:就是对对象里面的其他对象的引用做拷贝,而引用指向的是同一对象,这样的克隆,只有本类对象才能克隆本类对象,调用的是Object的克隆方法。
深克隆:让类继承标记接口Cloneable,并使用public修饰符重新定义clone方法,并调用超类的super.clone(),必继续克隆对象里的实例域(那么该实例域的类也应该继承Cloneable接口,如果没有那么会抛出一异常个ClonenotSupportedException),这样克隆的是值,而不是引用。

三、接口与回调:一般是定义一个接口,其他类的方法接受这个接口,并去调用这个接口的实现类里面的方法。


四、内部类:
1、使用内部类的主要原因:内部类可以访问类定义所在的作用域中的数据,包括私有数据;内部类可以对同一个包中的其他类隐藏起来;可以使用匿名的内部类可以让代码简洁。

2、普通内部类的特性:内部类的对象总有一个隐式引用,它指向了创建它的外部类对象。实际上是编译器修改了内部类的构造器,为内部类添加了一个外围类的引用。内部类可以为私有的,这样只有它的外围类才能产生这个内部类的对象。如果是一个公用的内部类,那么可以先new一个外围类的对象,然后用这个外围的对象去new一个内部类的对象,语法是OuterClassInstance.new InnerClass(),示例:
class Outer{
private String str="PRIVATE";
public class Inner{
   public void callOuter(){
    System.out.println(Outer.this.str);
  }
}
 

}
public class Test{
  public static void main(String[] args){
    Outer outer=new Outer();
    Outer.Inner inner=outer.new Inner();
    inner.callOuter();
  }

}
需要注意的是:内部是一种编译器现象,而与虚拟机无关的。内部类可以访问外围类的私有数据。内部类怎么去调用外围类的私有变量:其实是编译器编译时就给外围类添加了一个静态的方法,而内部类去调用这个方法。
javap -private||public ClassName 可以反射编译后的类。

3、局部内部类:不能用public说明符进行说明。在局部方法里的内部类,在外围内的其他方法里无法访问,但是这个内部类不仅可以访问外围类变量,还可以访问局部变量,不过为了维护数据的同一,要被访问的局部变量必须声明为final。(可以用一个对象的引用作为final,这样引用的对象里的值可以变,只是不可以让他去引用其他对象,比如可以用数组变量声明为final).

4、匿名内部类:假如只创建这个类的一个对象,就不必命名了,这个叫匿名的内部类。由于匿名类没有类名,所以匿名类不能有构造器,取而代之的是会将参数传递给超类构造器。

5、静态内部类:如果使用内部类只是为了把一个类隐藏在另一个类的内部,并不需要内部类引用外围类对象,此时可以将内部类声明为静态的,可以取消产生的对外围类的引用。静态的内部类可以在其他类中访问,要加上外围类名修饰:OuterClassName.InnerclassName innerclass=new OuterClassName.InnerclassName();


五、代理:利用代理可以在运行时创建一个实现了一组给定接口的新类,这样不用实现接口而用代理类去调用方法。代理需要掌握的类主要是:Proxy和InvocationHandler.所有代理类都覆盖了Object中的:tostring,equals,hashcode,这些方法也是调用invoke,Object中的其他方法没有被覆盖。
代理示例:
import java.lang.reflect.*;
public class MyProxy {
  public static void main(String []args){
    Myinterface o=(Myinterface)Proxy.newProxyInstance
    (Thread.currentThread().getContextClassLoader(),
     new Class[]{Myinterface.class},
     new MyInvocationHandle("ss"));
     System.out.println(o.myMethod("xx"));
  }

}
class MyInvocationHandle implements InvocationHandler{
    private String s;
    public MyInvocationHandle(String s){
    this.s=s;
    }
    public Object invoke(Object proxy, Method method, Object[] args)
      throws Throwable {
System.out.println("代理成功");
System.out.println(method.getName());
return args[0].toString();
}

}
interface Myinterface{
String myMethod(String s);
}
分享到:
评论

相关推荐

    MTPA数值求解:双法探究,MTPA数值求解详解:两种方法的比较与应用探索,MTPA数值求解两种方法 ,MTPA数值求解; 方法一; 方法二;,MTPA数值求解的两种高效方法

    MTPA数值求解:双法探究,MTPA数值求解详解:两种方法的比较与应用探索,MTPA数值求解两种方法 ,MTPA数值求解; 方法一; 方法二;,MTPA数值求解的两种高效方法

    为什么你的switch总出bug?90%新手不知道的break语句隐藏规则.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    避坑指南:DeepSeekAPI常见错误代码解析与解决方案.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    视频缩略图生成组件,图像格式转换另存为jpg, png, gif, bmp格式

    'Function 生成视频缩略图(ByVal 视频文件 As String, ByVal 保存缩略图的文件路径 As String, Optional ByVal jpg图像品质 As Long = 80, _ ' Optional ByVal 缩略图宽度 As Long = 500, Optional ByVal 缩略图高度 As Long = 500 _ ' , Optional 返回图像实际宽度 As Long, Optional 返回图像实际高度 As Long) As Boolean Public Function SaveImageAs(LoadImgFile As String, ByVal SaveAsImgFile As String, _ Optional ByVal JpgQuality As Long = 80, Optional hPal As Long, Optional Resolution As Single) As Boolean

    浏览器插件开发:基于DeepSeekAPI的沉浸式翻译工具实战.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    bkall_answers(2).json

    bkall_answers(2).json

    从零实现多轮对话:DeepSeek上下文推理模式开发手册.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    安全防护全攻略:DeepSeekAPI密钥管理与请求限流最佳实践.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    实时对话系统构建:WebSocket长连接下的API稳定性保障方案.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    结构化输出进阶指南:深度解析DeepSeekAPI响应数据处理技巧.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    清华出品AI教程(15天熟练掌握DeepSeek)

    近日,一份由清华大学团队发布《DeepSeek:从入门到精通》的AI学习教程冲上了热搜,它是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后及其团队倾力打造,从三个方面深入剖析了DeepSeek,DeepSeek是什么?有什么用?怎么使用? 详细论述了其应用场景与使用方法,并讲解了如何通过设计精妙的提示语来提升AI的使用效率,以及丰富的实例干货。 全部104页,完整版资料已经帮大家整理好了,免费领取 资料链接: https://pan.quark.cn/s/be3b500c539c

    异常处理大全:DeepSeekAPI调用中的10个常见错误与修复方案.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    冰点下载器珍藏版.zip

    冰点下载器珍藏版.zip

    Wallpaper Engine 壁纸一键提取

    Wallpaper Engine 是一款广受欢迎的动态壁纸软件,允许用户将各种动态、交互式壁纸应用到桌面上。其丰富的创意工坊内容让用户可以轻松下载和分享个性化的壁纸。而“一键提取”功能则是 Wallpaper Engine 中一个非常实用的工具,能够帮助用户快速提取和保存壁纸资源,方便后续使用或分享。

    基于碳达峰碳中和战略目标的城市园林绿化碳汇系统建设.pdf

    科研人员

    成本降低90%!DeepSeek与LangChain联动的API调用效率优化实验.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    13考试真题最近的t66.txt

    13考试真题最近的t66.txt

    对外承包项目借款合同2[示范文本].doc

    对外承包项目借款合同2[示范文本].doc

    性能对比测评:DeepSeek-V3与GPT-4接口的响应速度实测.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    基于java捷邻小程序.zip

    借助java编程语言和MySQL数据库等实现系统的全部功能,接下来对系统进行测试,测试系统是否有漏洞和测试用户权限来完善系统,最终系统完成达到相关标准。 本系统主要包括管理员和用户两个角色;主要包括首页、个人中心、用户管理、商品分类管理、商品信息管理、促销产品管理、系统管理、订单管理等功能的管理系统。 系统权限按管理员和用户这两类涉及用户划分。 (1)管理员功能需求 管理员登陆后,主要包括首页、个人中心、用户管理、商品分类管理、商品信息管理、促销产品管理、系统管理、订单管理等功能。 2)用户功能需求 用户登陆后进入小程序首页,可以实现首页、商品信息、促销产品、购物车、我的等,在我的页面可以对个人中心、我的收藏管理、用户充值、购物车、我的订单等功能进行详细操作。

Global site tag (gtag.js) - Google Analytics