乐趣区

关于java:新人小白福利五一假期怒肝一天整理Java类不简单不全你打我

上一篇是分享的是《Java 接口》,这篇分享的是《Java 类与类之间的关系、Java 外部类》。

Java 类与类之间的关系

Java 实现接口

一个类实现了接口

Java 依赖

如果 A 类的中办法返回值类型, 办法参数类型, 局部变量类型应用了 B 类, 称 A 类依赖 B 类。

Java 关联

在 A 类中应用 B 类定义了成员变量, 称 A 类关联 B 类。

Java 聚合

聚合是关联的一种, 如果 A 类由若干的 B 类组成 , A 类不能决定 B 类生命周期, 称 A 类是聚合类。

Java 组合

组合是关联的一种, 如果 A 类由若干的 B 类组成 , A 类能决定 B 类生命周期, 称 A 类是组合类

is a, A 类 is a B 类, 是一种继承关系 A 类是 B 类的一种, B 类是通用类, A 类是非凡类, 也只有当两个类合乎 is a 关系时才能够应用继承。

like a, A 类 like a 接口, 是一种实现关系。

has a , A 类 has a B 类, 是一种关联关系。

Java 外部类

package com.wkcto.chapter01.innerclass.demo01;

/**

* 成员外部类

* 1) 成员外部类与实例变量 / 实例办法一样, 都是属于某一个 Outer 对象的

* 2) 个别状况下, 在实例办法中应用成员外部类创建对象

* 3) 在 Java 中, 所有类编译后都会生成一个独立的字节码文件,

* 外部类的字节码文件: 外部类 $ 外部类名.class

*

*

*/

public class Outer {

int xx = 10 ; // 实例变量

public void m1() {System.out.println("实例办法");

xx = 123; // 在实例办法中, 能够间接应用实例变量

// 个别状况下, 在实例办法中应用成员外部类创建对象

Inner1 obj = new Inner1();}

// 成员外部类

class Inner1{}}
package com.wkcto.chapter01.innerclass.demo02;

/**

* 动态外部类

* 1) 应用 static 润饰的成员 外部类

* 2) 动态外部类个别状况下是在静态方法中应用

*

*

*/

public class Outer {

static int yy = 20; // 动态变量

public static void sm() {System.out.println("静态方法");

yy = 202 ; // 在静态方法中, 能够间接应用动态变量

// 个别状况下是在静态方法中应用动态外部类

Inner2 obj = new Inner2();}

// 动态外部类

static class Inner2{}}
package com.wkcto.chapter01.innerclass.demo03;

/**

* 部分外部类

* 1) 在办法体中定义的外部类就是部分外部类

* 2) 部分外部类的作用域 , 是从定义外部类的地位开始, 直到蕴含它的大括弧完结

*

*/

public class Outer {public void m3() {

int zz = 10; // 局部变量

class Inner3{} // 部分外部类}

}
package com.wkcto.chapter01.innerclass.demo04;

/**

* 匿名外部类

* 1) 匿名外部类, 就是没有类名 的外部类,

* 2) 因为匿名外部类没有类名, 匿名外部类的定义与对象的创立必须在一起

* 3) 给接口 / 抽象类的援用赋值时, 能够赋值匿名外部类对象, 接口实现类 / 抽象类的子类只应用一次时, 能够应用匿名外部类

* 常常, 如果办法地形参是接口 / 抽象类的援用, 在调用办法时, 能够传递匿名外部类对象

*

*/

public class Test {public static void main(String[] args) {

// 接口的援用只能赋值实现类对象, 接口不能实例化对象, 须要先定义一个类, 让它实现接口, 再创立实现类对象给接口援用赋值

// 如果接口的实现类就应用这一次, 当前再也不必了, 就不须要再独自的定义一个实现类了, 能够间接给接口援用赋值匿名外部类对象

Flyable flyable = new Flyable() {

// 在匿名外部类中重写接口的形象办法

@Override

public void fly() {System.out.println("我是匿名外部类中重写 的航行操作");

}

};

flyable.fly();

// 抽象类不能实例化对象, 抽象类的援用须要赋值子类对象, 先定义子类继承抽象类, 重写抽象类的形象办法, 再创立子类对象给抽象类援用赋值

// 当子类就应用这一次时, 能够间接给抽象类援用赋值匿名外部类对象

Animal animal = new Animal() {

// 在匿名外部类中重写抽象类的形象办法

@Override

public void walk() {System.out.println("这是一个神奇的动物, 它没有腿也能走路");

}

};

animal.walk();}

}

总结:

记住类与类之间的关系, 能够通过 Rose 工具画出类与类之间的关系。

理解什么是外部类, 理解外部类有哪些, 把握接口的援用 / 抽象类的援用能够赋值匿名外部类对象。

  • 下面就是《Java 类与类之间的关系、Java 外部类》,的分享,接下来为大家梳理《Java 异样简介与 Java 异样解决》。
  • 也欢送大家交换探讨,该文章若有不正确的中央,心愿大家多多包涵。
  • 你们的反对就是我最大的能源,如果对大家有帮忙给个赞哦~~~
退出移动版