ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java知识点整理与遇到的问题

2019-09-03 10:00:46  阅读:176  来源: 互联网

标签:知识点 java String name Device 匿名 整理 public 内部


一 点睛

匿名内部类适合创建那种只需要一次使用的类,定义匿名内部类的语法格式如下:

new 父类构造器(实参列表) | 实现接口()

{

  //匿名内部类的类体部分

}

从上面的定义可以看出,匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口。

两条规则。

匿名内部类不能是抽象类。

匿名内部类不能定义构造器。由于匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以初始化块,可以通过初始化块来完成构造器需要完成的工作。

1 点睛

最常用的创建匿名内部类的方式是创建某个接口类型的对象。

2 代码
interface Product
{
public double getPrice();
public String getName();
}
public class AnonymousTest
{
public void test(Product p)
{
System.out.println(“购买了一个” + p.getName()
+ “,花掉了” + p.getPrice());
}
public static void main(String[] args)
{
AnonymousTest ta = new AnonymousTest();
// 调用test()方法时,需要传入一个Product参数,
// 此处传入其匿名内部类的实例
ta.test(new Product()
{
public double getPrice()
{
return 567.8;
}
public String getName()
{
return “AGP显卡”;
}
});
}
}
3 运行

购买了一个AGP显卡,花掉了567.8

4 说明

定义匿名内部类无须class关键字,而是在定义匿名内部类时直接生成该匿名内部类的对象。

由于匿名内部类不能是抽象类,所以匿名内部类必须实现它的抽象父类或接口里包含的所有抽象方法。

三 实战

1 点睛

当通过接口来创建匿名内部类时,匿名内部类不能显示创建构造器,因此匿名内部类里只有一个隐式的无参构造器,故new接口名后的括号里不能传入参数值。

如果通过继承父类来创建匿名内部类时,匿名内部类将拥有和父类相似的构造器,此处的相似指的是拥有相同的形参列表。

2 代码

abstract class Device
{
private String name;
public abstract double getPrice();
public Device(){}
public Device(String name)
{
this.name = name;
}
// 此处省略了name的setter和getter方法
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
}
public class AnonymousInner
{
public void test(Device d)
{
System.out.println(“购买了一个” + d.getName()
+ “,花掉了” + d.getPrice());
}
public static void main(String[] args)
{
AnonymousInner ai = new AnonymousInner();
// 调用有参数的构造器创建Device匿名实现类的对象
ai.test(new Device(“电子示波器”)
{
public double getPrice()
{
return 67.8;
}
});
// 调用无参数的构造器创建Device匿名实现类的对象
Device d = new Device()
{
// 初始化块
{
System.out.println(“匿名内部类的初始化块…”);
}
// 实现抽象方法
public double getPrice()
{
return 56.2;
}
// 重写父类的实例方法
public String getName()
{
return “键盘”;
}
};
ai.test(d);
}
}
Java学习中目前遇到的问题及注意点
1.复用代码的两种方法

复用代码的窍门在使用类而不破坏现有程序代码。

①组合:在新的类中产生现有类的对象。

②继承:以现有类的形式添加新的代码。

2.继承类调用构造器

导出类在调用构造器时,会自动调用基类的构造器。导出类的对象包含了基类的子对象。
public class test1 {

public test1() {
	System.out.println("test1");
}

}

public class test2 extends test1{
public test2() {
System.out.println(“test2”);
}
}

public class achieve {
public static void main(String[] args) {
test2 a = new test2();
}
}

标签:知识点,java,String,name,Device,匿名,整理,public,内部
来源: https://blog.csdn.net/heyuerong/article/details/100504248

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有