美文网首页
《Thinking In Java 》复用类

《Thinking In Java 》复用类

作者: JuSong | 来源:发表于2017-02-28 15:07 被阅读0次

组合语法:

将对象(基本数据类型)的引用置于新类中。

数据的初始化方式:

1.在定义对象的地方,意味着它们能够在构造器被调用之前被初始化。

2.再类的构造器中

3.在使用这些对象前。

4.使用实例初始化

 

继承语法:

当创建一个类的时候总是在继承,除非明确指出从类中继承,否则都在从Object类中隐试的继承。

继承中并不一定非要使用基类中方法,也可以添加自己的方法。

1、初始化基类

    基类的构造器具有执行基类初始化的能力。

2.带参数的构造器:

一个类中如果没有默认的基类构造器,或者想调用一个带参的基类构造器,就必须使用super关键字显示的调用基类构造器的语句,并且配以适当的参数列表。

class Animal {
Animal(int i){
System.out.print(i);
}
}

class Cat extends Animal {
Cat(int i) {
super(i);
System.out.print(i);
}
}

class Food extends Cat {
Food() {
super(11);
System.out.print("123456");
}
static void main(){
Food f=new Food();
}
}

 

 

代理:

组合和继承的中庸之道。

我们将一个成员对象置于所需要构造的类中(就像组合),但与此我们在新类中暴露了该成员对象的所有方法(就像继承)

class SpacShipControll{
void up(int i){}
void down(int i){}
}
public class SpacShipDelegation extends SpacShipControll{
private String name;
private SpacShipControll spacShipControll=new SpacShipControll();
public SpacShipDelegation (String name){
this.name=name;
}
public void down(int i){
spacShipControll.down(i);
}
public void up(int i){
spacShipControll.up(i);
}
public static void main(){
SpacShipDelegation spacShipDelegation=new SpacShipDelegation("new");
spacShipDelegation.up(100);
}

}

可以看到,运用代理的方式如何调用方法传递数据给spacShipControll对象。

尽管java不支持代理,但是很多开发工具却支持代理,例如,JetBrains Idea IDE就可以自动生成上面例子

 

Protect关键字:

就累用户而言,这是private的,但对于任何继承此类的导出类,或者其他任何一个包内类来说,他确实可以访问的。(protected也提供了包内访问的权限)

向上转型:

为新类提供方法,并不是继承中重要的方面,最重要的是,用来表现新类和基类之间的关系(新类是基类的一种现有方式)

由于向上转型是从一个较专用型的类向通用性了的类转型。所以总是很安全的,他可能会存在很多的方法,向上转型类接口中唯一可能发生的事情就是 方法的丢失。

 

 

final关键字:

final的三种情况:数据、方法和类。

final 数据:告知编译器这块数据是恒定不变的。final 修饰基本类型时很好理解,修饰对象的时候又怎么样呢?效果是使得引用不可变,即无法指向另一个对象,但对于正在指向的对象自身的内容是可以改变的。

final 方法:用来锁定方法,确保方法不会被覆盖。在早期 final 方法还可用来提升效率,但现在已经不提倡了。所以,只有在想明确禁止覆盖的时候,才将方法设置为 final。
private 方法默认隐式指定为final, 无法被继承;如果子类定义相同名称和参数的方法等同于生成了新的方法,没有覆盖父类设置了final的方法。

final 类:类不可继承。

相关文章

  • 《Thinking In Java 》复用类

    组合语法: 将对象(基本数据类型)的引用置于新类中。 数据的初始化方式: 1.在定义对象的地方,意味着它们能够在构...

  • 《Thinking In Java》复用类

    Java复用类 组合与继承 组合:在新的类中产生现有类的对象。 继承:按照现有类的类型来创建新类,无需改变现有类的...

  • Thinking in java -Chapter 7 复用类

    类中域为基本类型时能够自动被初始化为0,对象初始化为null. 编译器并不简单的为每个引用创建对象。如果想要初始化...

  • 3.复用类(Thinking in java学习三)

    组合语法 将对象引用置于新类中即可。 编译器并不是简单地为每一个引用都创建默认对象,因为若真要那样做的话,就会在许...

  • Java编程思想学习笔记(7)

    Java编程思想学习笔记(7) 复用类 复用代码是Java的功能之一。 Java中对代码的复用是围绕着类展开的,可...

  • 读书笔记 | 《Think in Java》Ⅶ 复用类

    Ⅶ 复用类 复用代码是Java众多引人注目的功能之一,Java的代码复用都是围绕类来展开的。所以很多时候,不需要重...

  • 【Java】复用类

    复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对之改变是不够的,它还必须...

  • 《 Java 编程思想》CH07 复用类

    复用代码是 Java 众多引人注目的功能之一。 Java 可以通过创建类来复用代码,要在使用类的时候不破坏现有代码...

  • 《Java编程思想》复用

    复用代码是java众多引人注目的功能之一。 Java 复用类有2中方式。第一种是组合,组合就是在新类中产生现有类的...

  • Java-复用类

    复用类的关键在于使用类而不破坏现有程序代码,通过两种方式可以达到此目的: 第一种,只需在新的类中产生现有类的对象。...

网友评论

      本文标题:《Thinking In Java 》复用类

      本文链接:https://www.haomeiwen.com/subject/gtvxgttx.html